Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FloatTexture version Blendshape #737

Merged
merged 55 commits into from
Apr 20, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
779a529
feat: add texture-2d-array
GuoLei1990 Apr 6, 2022
480d9cb
refactor: format code
GuoLei1990 Apr 6, 2022
17f9464
refactor: opt code
GuoLei1990 Apr 6, 2022
096becc
refactor: opt code
GuoLei1990 Apr 6, 2022
a6aff97
refactor: opt code
GuoLei1990 Apr 6, 2022
c7fef94
refactor: opt code
GuoLei1990 Apr 6, 2022
2861746
feat: init float texture blendshape
GuoLei1990 Apr 7, 2022
1353341
refactor: opt blendshape animation
GuoLei1990 Apr 7, 2022
b39b2b3
refactor: update shader
GuoLei1990 Apr 7, 2022
d95b915
refactor: opt code
GuoLei1990 Apr 7, 2022
72a44d1
refactor: opt code
GuoLei1990 Apr 7, 2022
bd28859
refactor: opt code
GuoLei1990 Apr 8, 2022
f10247f
refactor: opt code
GuoLei1990 Apr 8, 2022
1d66ed5
fix: fix bug
GuoLei1990 Apr 8, 2022
6c2bb05
refactor: opt code
GuoLei1990 Apr 8, 2022
7baeb6f
refactor: opt code
GuoLei1990 Apr 8, 2022
0779ef7
refactor: opt code
GuoLei1990 Apr 11, 2022
c2703fd
refactor: add `OASIS_BLENDSHAPE_COUNT` for shader
GuoLei1990 Apr 11, 2022
5096b0b
refactor: opt code
GuoLei1990 Apr 11, 2022
d78c30f
refactor: clear
GuoLei1990 Apr 11, 2022
1a3869d
refactor: opt code
GuoLei1990 Apr 12, 2022
669755a
refactor: fix bug
GuoLei1990 Apr 12, 2022
f7abc72
refactor:opt code
GuoLei1990 Apr 12, 2022
fa86a69
refactor:opt code
GuoLei1990 Apr 12, 2022
50d9586
refactor: opt code
GuoLei1990 Apr 12, 2022
ccfe9a0
refactor: opt code
GuoLei1990 Apr 12, 2022
b91e460
refactor: opt code
GuoLei1990 Apr 12, 2022
2094172
refactor:opt code
GuoLei1990 Apr 12, 2022
631e2f8
refactor:opt code
GuoLei1990 Apr 12, 2022
2e74269
refactor: opt code
GuoLei1990 Apr 12, 2022
627a9be
refactor: opt code
GuoLei1990 Apr 12, 2022
725fe61
refactor: opt code
GuoLei1990 Apr 13, 2022
206bad0
refactor: opt code
GuoLei1990 Apr 13, 2022
c4052d3
refactor: opt code
GuoLei1990 Apr 13, 2022
b06cc6a
refactor: opt code
GuoLei1990 Apr 13, 2022
50f1fb2
refactor: opt comments
GuoLei1990 Apr 13, 2022
a5a1ccd
refactor: opt code
GuoLei1990 Apr 13, 2022
1b6ee21
refactor: opt
GuoLei1990 Apr 13, 2022
e046205
refactor: opt code
GuoLei1990 Apr 13, 2022
0e86783
refactor: opt import
GuoLei1990 Apr 13, 2022
6e5c334
refactor: opt import
GuoLei1990 Apr 13, 2022
60f4b70
refactor: fix normal
GuoLei1990 Apr 13, 2022
dd1e68e
refactor: use texelFetch
GuoLei1990 Apr 13, 2022
0c1fe19
refactor: clear import
GuoLei1990 Apr 13, 2022
6fcf1f6
refactor: opt code
GuoLei1990 Apr 13, 2022
e570eaa
refactor:opt code
GuoLei1990 Apr 13, 2022
261424b
refactor: opt code
GuoLei1990 Apr 14, 2022
ad13ade
v0.7.0-beta.0
GuoLei1990 Apr 14, 2022
a8817a3
refactor: opt code
GuoLei1990 Apr 14, 2022
88d7711
Merge branch 'dev/0.7' into pr/bs
GuoLei1990 Apr 20, 2022
43248e0
refactor: update package.json
GuoLei1990 Apr 20, 2022
dfff333
refactor: opt UpdateFlag
GuoLei1990 Apr 20, 2022
d580be9
refactor: opt code
GuoLei1990 Apr 20, 2022
a88df8a
refactor: opt code
GuoLei1990 Apr 20, 2022
6580d29
refactor: opt code
GuoLei1990 Apr 20, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lerna.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"npmClient": "npm",
"version": "0.6.7",
"version": "0.7.0-beta.0",
"bootstrap": {
"hoist": true
},
Expand Down
4 changes: 2 additions & 2 deletions packages/controls/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@oasis-engine/controls",
"version": "0.6.7",
"version": "0.7.0-beta.0",
"license": "MIT",
"scripts": {
"b:types": "tsc",
Expand All @@ -15,6 +15,6 @@
"types/**/*"
],
"dependencies": {
"oasis-engine": "0.6.7"
"oasis-engine": "0.7.0-beta.0"
}
}
6 changes: 3 additions & 3 deletions packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@oasis-engine/core",
"version": "0.6.7",
"version": "0.7.0-beta.0",
"license": "MIT",
"main": "dist/main.js",
"module": "dist/module.js",
Expand All @@ -14,9 +14,9 @@
"types/**/*"
],
"dependencies": {
"@oasis-engine/math": "0.6.7"
"@oasis-engine/math": "0.7.0-beta.0"
},
"devDependencies": {
"@oasis-engine/design": "0.6.7"
"@oasis-engine/design": "0.7.0-beta.0"
}
}
10 changes: 5 additions & 5 deletions packages/core/src/2d/sprite/Sprite.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { BoundingBox, MathUtil, Rect, Vector2, Vector4 } from "@oasis-engine/math";
import { RefObject } from "../../asset/RefObject";
import { BoolUpdateFlag } from "../../BoolUpdateFlag";
import { Engine } from "../../Engine";
import { Texture2D } from "../../texture/Texture2D";
import { UpdateFlag } from "../../UpdateFlag";
import { UpdateFlagManager } from "../../UpdateFlagManager";

/**
Expand Down Expand Up @@ -182,7 +182,7 @@ export class Sprite extends RefObject {
* Clone.
* @returns Cloned sprite
*/
clone(): Sprite {
clone(): Sprite {
const cloneSprite = new Sprite(
this._engine,
this._texture,
Expand All @@ -201,8 +201,8 @@ export class Sprite extends RefObject {
/**
* @internal
*/
_registerUpdateFlag(): UpdateFlag {
return this._updateFlagManager.register();
_registerUpdateFlag(): BoolUpdateFlag {
return this._updateFlagManager.createFlag(BoolUpdateFlag);
}

/**
Expand Down Expand Up @@ -363,7 +363,7 @@ export class Sprite extends RefObject {

private _setDirtyFlagTrue(type: number): void {
this._dirtyFlag |= type;
this._updateFlagManager.distribute();
this._updateFlagManager.dispatch();
}

private _setDirtyFlagFalse(type: number): void {
Expand Down
5 changes: 3 additions & 2 deletions packages/core/src/2d/sprite/SpriteMask.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Vector3 } from "@oasis-engine/math";
import { BoolUpdateFlag } from "../../BoolUpdateFlag";
import { Camera } from "../../Camera";
import { assignmentClone, deepClone, ignoreClone } from "../../clone/CloneManager";
import { ICustomClone } from "../../clone/ComponentCloner";
Expand Down Expand Up @@ -28,13 +29,13 @@ export class SpriteMask extends Renderer implements ICustomClone {
@deepClone
private _positions: Vector3[] = [new Vector3(), new Vector3(), new Vector3(), new Vector3()];
@ignoreClone
private _worldMatrixDirtyFlag: UpdateFlag;
private _worldMatrixDirtyFlag: BoolUpdateFlag;
@ignoreClone
private _sprite: Sprite = null;
@assignmentClone
private _alphaCutoff: number = 0.5;
@ignoreClone
private _spriteDirty: UpdateFlag;
private _spriteDirty: BoolUpdateFlag;

/** The mask layers the sprite mask influence to. */
@assignmentClone
Expand Down
5 changes: 3 additions & 2 deletions packages/core/src/2d/sprite/SpriteRenderer.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { BoundingBox, Color, Vector3 } from "@oasis-engine/math";
import { BoolUpdateFlag } from "../../BoolUpdateFlag";
import { Camera } from "../../Camera";
import { assignmentClone, deepClone, ignoreClone } from "../../clone/CloneManager";
import { ICustomClone } from "../../clone/ComponentCloner";
Expand Down Expand Up @@ -45,9 +46,9 @@ export class SpriteRenderer extends Renderer implements ICustomClone {
@ignoreClone
private _dirtyFlag: number = 0;
@ignoreClone
private _isWorldMatrixDirty: UpdateFlag;
private _isWorldMatrixDirty: BoolUpdateFlag;
@ignoreClone
private _spriteDirty: UpdateFlag;
private _spriteDirty: BoolUpdateFlag;
@assignmentClone
private _maskInteraction: SpriteMaskInteraction = SpriteMaskInteraction.None;
@assignmentClone
Expand Down
3 changes: 2 additions & 1 deletion packages/core/src/2d/text/TextRenderer.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { BoundingBox, Color, Vector3 } from "@oasis-engine/math";
import { Sprite, SpriteMaskInteraction, SpriteMaskLayer, SpriteRenderer } from "..";
import { CompareFunction, Renderer, UpdateFlag } from "../..";
import { BoolUpdateFlag } from "../../BoolUpdateFlag";
import { Camera } from "../../Camera";
import { assignmentClone, deepClone, ignoreClone } from "../../clone/CloneManager";
import { Entity } from "../../Entity";
Expand Down Expand Up @@ -55,7 +56,7 @@ export class TextRenderer extends Renderer {
@ignoreClone
private _dirtyFlag: number = DirtyFlag.Property;
@ignoreClone
private _isWorldMatrixDirty: UpdateFlag;
private _isWorldMatrixDirty: BoolUpdateFlag;
@assignmentClone
private _maskInteraction: SpriteMaskInteraction = SpriteMaskInteraction.None;
@assignmentClone
Expand Down
16 changes: 16 additions & 0 deletions packages/core/src/BoolUpdateFlag.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { UpdateFlag } from "./UpdateFlag";

/**
* Used to update tags.
*/
export class BoolUpdateFlag extends UpdateFlag {
/** Flag. */
flag = true;

/**
* @inheritdoc
*/
dispatch(): void {
this.flag = true;
}
}
7 changes: 4 additions & 3 deletions packages/core/src/Camera.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { BoundingFrustum, MathUtil, Matrix, Quaternion, Ray, Vector2, Vector3, Vector4 } from "@oasis-engine/math";
import { Logger } from "./base";
import { BoolUpdateFlag } from "./BoolUpdateFlag";
import { deepClone, ignoreClone } from "./clone/CloneManager";
import { Component } from "./Component";
import { dependencies } from "./ComponentsDependencies";
Expand Down Expand Up @@ -124,13 +125,13 @@ export class Camera extends Component {
private _renderTarget: RenderTarget = null;

@ignoreClone
private _frustumViewChangeFlag: UpdateFlag;
private _frustumViewChangeFlag: BoolUpdateFlag;
@ignoreClone
private _transform: Transform;
@ignoreClone
private _isViewMatrixDirty: UpdateFlag;
private _isViewMatrixDirty: BoolUpdateFlag;
@ignoreClone
private _isInvViewProjDirty: UpdateFlag;
private _isInvViewProjDirty: BoolUpdateFlag;
@deepClone
private _projectionMatrix: Matrix = new Matrix();
@deepClone
Expand Down
11 changes: 10 additions & 1 deletion packages/core/src/Engine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ import { ShaderMacroCollection } from "./shader/ShaderMacroCollection";
import { ShaderPool } from "./shader/ShaderPool";
import { ShaderProgramPool } from "./shader/ShaderProgramPool";
import { RenderState } from "./shader/state/RenderState";
import { Texture2D, TextureCube, TextureCubeFace, TextureFormat } from "./texture";
import { Texture2D, Texture2DArray, TextureCube, TextureCubeFace, TextureFormat } from "./texture";

/** TODO: delete */
const engineFeatureManager = new FeatureManager<EngineFeature>();
Expand Down Expand Up @@ -64,6 +64,8 @@ export class Engine extends EventDispatcher {
/* @internal */
_whiteTextureCube: TextureCube;
/* @internal */
_whiteTexture2DArray: Texture2DArray;
/* @internal */
_backgroundTextureMaterial: Material;
/* @internal */
_renderCount: number = 0;
Expand Down Expand Up @@ -214,6 +216,13 @@ export class Engine extends EventDispatcher {
this._whiteTexture2D = whiteTexture2D;
this._whiteTextureCube = whiteTextureCube;

if (hardwareRenderer.isWebGL2) {
const whiteTexture2DArray = new Texture2DArray(this, 1, 1, 1, TextureFormat.R8G8B8A8, false);
whiteTexture2DArray.setPixelBuffer(0, whitePixel);
whiteTexture2DArray.isGCIgnored = true;
this._whiteTexture2DArray = whiteTexture2DArray;
}

this._backgroundTextureMaterial = new Material(this, Shader.find("background-texture"));
this._backgroundTextureMaterial.isGCIgnored = true;
this._backgroundTextureMaterial.renderState.depthState.compareFunction = CompareFunction.LessEqual;
Expand Down
3 changes: 2 additions & 1 deletion packages/core/src/Entity.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { Matrix } from "@oasis-engine/math";
import { EngineObject } from "./base";
import { BoolUpdateFlag } from "./BoolUpdateFlag";
import { ComponentCloner } from "./clone/ComponentCloner";
import { Component } from "./Component";
import { ComponentsDependencies } from "./ComponentsDependencies";
Expand Down Expand Up @@ -484,7 +485,7 @@ export class Entity extends EngineObject {

//--------------------------------------------------------------deprecated----------------------------------------------------------------
private _invModelMatrix: Matrix = new Matrix();
private _inverseWorldMatFlag: UpdateFlag;
private _inverseWorldMatFlag: BoolUpdateFlag;

/**
* @deprecated
Expand Down
16 changes: 16 additions & 0 deletions packages/core/src/ListenerUpdateFlag.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { UpdateFlag } from "./UpdateFlag";

/**
* Used to update tags.
*/
export class ListenerUpdateFlag extends UpdateFlag {
/** Listener. */
listener: Function;

/**
* @inheritdoc
*/
dispatch(param?: Object): void {
this.listener && this.listener(param);
}
}
3 changes: 2 additions & 1 deletion packages/core/src/Renderer.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { BoundingBox, Matrix, Vector3 } from "@oasis-engine/math";
import { BoolUpdateFlag } from "./BoolUpdateFlag";
import { Camera } from "./Camera";
import { deepClone, ignoreClone, shallowClone } from "./clone/CloneManager";
import { Component } from "./Component";
Expand Down Expand Up @@ -52,7 +53,7 @@ export abstract class Renderer extends Component {
protected _materials: Material[] = [];

@ignoreClone
private _transformChangeFlag: UpdateFlag;
private _transformChangeFlag: BoolUpdateFlag;
@deepClone
private _bounds: BoundingBox = new BoundingBox(new Vector3(), new Vector3());
@ignoreClone
Expand Down
7 changes: 4 additions & 3 deletions packages/core/src/Transform.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { MathUtil, Matrix, Matrix3x3, Quaternion, Vector3 } from "@oasis-engine/math";
import { BoolUpdateFlag } from "./BoolUpdateFlag";
import { deepClone, ignoreClone } from "./clone/CloneManager";
import { Component } from "./Component";
import { Entity } from "./Entity";
Expand Down Expand Up @@ -539,8 +540,8 @@ export class Transform extends Component {
* Register world transform change flag.
* @returns Change flag
*/
registerWorldChangeFlag(): UpdateFlag {
return this._updateFlagManager.register();
registerWorldChangeFlag(): BoolUpdateFlag {
return this._updateFlagManager.createFlag(BoolUpdateFlag);
}

/**
Expand Down Expand Up @@ -706,7 +707,7 @@ export class Transform extends Component {

private _worldAssociatedChange(type: number): void {
this._dirtyFlag |= type;
this._updateFlagManager.distribute();
this._updateFlagManager.dispatch();
}

private _rotateByQuat(rotateQuat: Quaternion, relativeToLocal: boolean) {
Expand Down
33 changes: 25 additions & 8 deletions packages/core/src/UpdateFlag.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,39 @@
import { removeFromArray } from "./base/Util";
import { UpdateFlagManager } from "./UpdateFlagManager";

/**
* Used to update tags.
*/
export class UpdateFlag {
/** Flag. */
flag = true;
export abstract class UpdateFlag {
/** @internal */
_flagManagers: UpdateFlagManager[] = [];

constructor(private _flags: UpdateFlag[] = []) {
this._flags.push(this);
/**
* Dispatch.
* @param param - Parameter
*/
abstract dispatch(param?: Object): void;

/**
* Clear.
*/
clearFromManagers(): void {
this._removeFromManagers();
this._flagManagers.length = 0;
}

/**
* Destroy.
*/
destroy(): void {
const flags = this._flags;
removeFromArray(flags, this);
this._flags = null;
this._removeFromManagers();
this._flagManagers = null;
}

private _removeFromManagers(): void {
const flagManagers = this._flagManagers;
for (let i = 0, n = flagManagers.length; i < n; i++) {
removeFromArray(flagManagers[i]._updateFlags, this);
}
}
}
29 changes: 24 additions & 5 deletions packages/core/src/UpdateFlagManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,35 @@ import { UpdateFlag } from "./UpdateFlag";
* @internal
*/
export class UpdateFlagManager {
private _updateFlags: UpdateFlag[] = [];
/** @internal */
_updateFlags: UpdateFlag[] = [];

register(): UpdateFlag {
return new UpdateFlag(this._updateFlags);
/**
* Create a UpdateFlag.
* @returns - The UpdateFlag.
*/
createFlag<T extends UpdateFlag>(type: new () => T): T {
const flag = new type();
this.addFlag(flag);
return flag;
}

distribute(): void {
/**
* Add a UpdateFlag.
* @param flag - The UpdateFlag.
*/
addFlag(flag: UpdateFlag): void {
this._updateFlags.push(flag);
flag._flagManagers.push(this);
}

/**
* Dispatch.
*/
dispatch(param?: Object): void {
const updateFlags = this._updateFlags;
for (let i = updateFlags.length - 1; i >= 0; i--) {
updateFlags[i].flag = true;
updateFlags[i].dispatch(param);
}
}
}
3 changes: 2 additions & 1 deletion packages/core/src/animation/Animator.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Quaternion, Vector3 } from "@oasis-engine/math";
import { BoolUpdateFlag } from "../BoolUpdateFlag";
import { assignmentClone, ignoreClone } from "../clone/CloneManager";
import { Component } from "../Component";
import { Entity } from "../Entity";
Expand Down Expand Up @@ -36,7 +37,7 @@ export class Animator extends Component {
@assignmentClone
protected _speed: number = 1.0;
@ignoreClone
protected _controllerUpdateFlag: UpdateFlag;
protected _controllerUpdateFlag: BoolUpdateFlag;

@ignoreClone
private _animatorLayersData: AnimatorLayerData[] = [];
Expand Down
Loading