Skip to content

Commit db5a2b8

Browse files
committed
optim #4
1 parent ec4a637 commit db5a2b8

File tree

7 files changed

+289
-276
lines changed

7 files changed

+289
-276
lines changed

src/Materials/Background/backgroundMaterial.ts

Lines changed: 44 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -909,7 +909,7 @@ export class BackgroundMaterial extends PushMaterial {
909909
};
910910

911911
var join = defines.toString();
912-
let effect = scene.getEngine().createEffect("background", <EffectCreationOptions>{
912+
subMesh.setEffect(scene.getEngine().createEffect("background", <EffectCreationOptions>{
913913
attributes: attribs,
914914
uniformsNames: uniforms,
915915
uniformBuffersNames: uniformBuffers,
@@ -919,10 +919,9 @@ export class BackgroundMaterial extends PushMaterial {
919919
onCompiled: onCompiled,
920920
onError: this.onError,
921921
indexParameters: { maxSimultaneousLights: this._maxSimultaneousLights }
922-
}, engine);
923-
subMesh.setEffect(effect, defines);
922+
}, engine), defines);
924923

925-
this.buildUniformLayout(effect);
924+
this.buildUniformLayout();
926925
}
927926

928927
if (!subMesh.effect || !subMesh.effect.isReady()) {
@@ -978,35 +977,35 @@ export class BackgroundMaterial extends PushMaterial {
978977
/**
979978
* Build the uniform buffer used in the material.
980979
*/
981-
public buildUniformLayout(effect: Effect): void {
980+
public buildUniformLayout(): void {
982981
// Order is important !
983-
effect._uniformBuffer.addUniform("vPrimaryColor", 4);
984-
effect._uniformBuffer.addUniform("vPrimaryColorShadow", 4);
985-
effect._uniformBuffer.addUniform("vDiffuseInfos", 2);
986-
effect._uniformBuffer.addUniform("vReflectionInfos", 2);
987-
effect._uniformBuffer.addUniform("diffuseMatrix", 16);
988-
effect._uniformBuffer.addUniform("reflectionMatrix", 16);
989-
effect._uniformBuffer.addUniform("vReflectionMicrosurfaceInfos", 3);
990-
effect._uniformBuffer.addUniform("fFovMultiplier", 1);
991-
effect._uniformBuffer.addUniform("pointSize", 1);
992-
effect._uniformBuffer.addUniform("shadowLevel", 1);
993-
effect._uniformBuffer.addUniform("alpha", 1);
994-
effect._uniformBuffer.addUniform("vBackgroundCenter", 3);
995-
effect._uniformBuffer.addUniform("vReflectionControl", 4);
996-
997-
effect._uniformBuffer.create();
982+
this._uniformBuffer.addUniform("vPrimaryColor", 4);
983+
this._uniformBuffer.addUniform("vPrimaryColorShadow", 4);
984+
this._uniformBuffer.addUniform("vDiffuseInfos", 2);
985+
this._uniformBuffer.addUniform("vReflectionInfos", 2);
986+
this._uniformBuffer.addUniform("diffuseMatrix", 16);
987+
this._uniformBuffer.addUniform("reflectionMatrix", 16);
988+
this._uniformBuffer.addUniform("vReflectionMicrosurfaceInfos", 3);
989+
this._uniformBuffer.addUniform("fFovMultiplier", 1);
990+
this._uniformBuffer.addUniform("pointSize", 1);
991+
this._uniformBuffer.addUniform("shadowLevel", 1);
992+
this._uniformBuffer.addUniform("alpha", 1);
993+
this._uniformBuffer.addUniform("vBackgroundCenter", 3);
994+
this._uniformBuffer.addUniform("vReflectionControl", 4);
995+
996+
this._uniformBuffer.create();
998997
}
999998

1000999
/**
10011000
* Unbind the material.
10021001
*/
10031002
public unbind(): void {
10041003
if (this._diffuseTexture && this._diffuseTexture.isRenderTarget) {
1005-
this._activeEffect._uniformBuffer.setTexture("diffuseSampler", null);
1004+
this._uniformBuffer.setTexture("diffuseSampler", null);
10061005
}
10071006

10081007
if (this._reflectionTexture && this._reflectionTexture.isRenderTarget) {
1009-
this._activeEffect._uniformBuffer.setTexture("reflectionSampler", null);
1008+
this._uniformBuffer.setTexture("reflectionSampler", null);
10101009
}
10111010

10121011
super.unbind();
@@ -1046,76 +1045,75 @@ export class BackgroundMaterial extends PushMaterial {
10461045
MaterialHelper.BindBonesParameters(mesh, this._activeEffect);
10471046

10481047
let mustRebind = this._mustRebind(scene, effect, mesh.visibility);
1049-
let uniformBuffer = effect._uniformBuffer;
10501048
if (mustRebind) {
1051-
uniformBuffer.bindToEffect(effect, "Material");
1049+
this._uniformBuffer.bindToEffect(effect, "Material");
10521050

10531051
this.bindViewProjection(effect);
10541052

10551053
let reflectionTexture = this._reflectionTexture;
1056-
if (!uniformBuffer.useUbo || !this.isFrozen || !uniformBuffer.isSync) {
1054+
if (!this._uniformBuffer.useUbo || !this.isFrozen || !this._uniformBuffer.isSync) {
10571055

10581056
// Texture uniforms
10591057
if (scene.texturesEnabled) {
10601058
if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
1061-
uniformBuffer.updateFloat2("vDiffuseInfos", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);
1062-
MaterialHelper.BindTextureMatrix(this._diffuseTexture, uniformBuffer, "diffuse");
1059+
this._uniformBuffer.updateFloat2("vDiffuseInfos", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);
1060+
MaterialHelper.BindTextureMatrix(this._diffuseTexture, this._uniformBuffer, "diffuse");
10631061
}
10641062

10651063
if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {
1066-
uniformBuffer.updateMatrix("reflectionMatrix", reflectionTexture.getReflectionTextureMatrix());
1067-
uniformBuffer.updateFloat2("vReflectionInfos", reflectionTexture.level, this._reflectionBlur);
1064+
this._uniformBuffer.updateMatrix("reflectionMatrix", reflectionTexture.getReflectionTextureMatrix());
1065+
this._uniformBuffer.updateFloat2("vReflectionInfos", reflectionTexture.level, this._reflectionBlur);
10681066

1069-
uniformBuffer.updateFloat3("vReflectionMicrosurfaceInfos",
1067+
this._uniformBuffer.updateFloat3("vReflectionMicrosurfaceInfos",
10701068
reflectionTexture.getSize().width,
10711069
reflectionTexture.lodGenerationScale,
10721070
reflectionTexture.lodGenerationOffset);
10731071
}
10741072
}
10751073

10761074
if (this.shadowLevel > 0) {
1077-
uniformBuffer.updateFloat("shadowLevel", this.shadowLevel);
1075+
this._uniformBuffer.updateFloat("shadowLevel", this.shadowLevel);
10781076
}
1079-
uniformBuffer.updateFloat("alpha", this.alpha);
1077+
this._uniformBuffer.updateFloat("alpha", this.alpha);
10801078

10811079
// Point size
10821080
if (this.pointsCloud) {
1083-
uniformBuffer.updateFloat("pointSize", this.pointSize);
1081+
this._uniformBuffer.updateFloat("pointSize", this.pointSize);
10841082
}
10851083

10861084
if (defines.USEHIGHLIGHTANDSHADOWCOLORS) {
1087-
uniformBuffer.updateColor4("vPrimaryColor", this._primaryHighlightColor, 1.0);
1088-
uniformBuffer.updateColor4("vPrimaryColorShadow", this._primaryShadowColor, 1.0);
1085+
this._uniformBuffer.updateColor4("vPrimaryColor", this._primaryHighlightColor, 1.0);
1086+
this._uniformBuffer.updateColor4("vPrimaryColorShadow", this._primaryShadowColor, 1.0);
10891087
}
10901088
else {
1091-
uniformBuffer.updateColor4("vPrimaryColor", this._primaryColor, 1.0);
1089+
this._uniformBuffer.updateColor4("vPrimaryColor", this._primaryColor, 1.0);
10921090
}
10931091
}
10941092

1095-
uniformBuffer.updateFloat("fFovMultiplier", this._fovMultiplier);
1093+
this._uniformBuffer.updateFloat("fFovMultiplier", this._fovMultiplier);
10961094

10971095
// Textures
10981096
if (scene.texturesEnabled) {
10991097
if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
1100-
uniformBuffer.setTexture("diffuseSampler", this._diffuseTexture);
1098+
this._uniformBuffer.setTexture("diffuseSampler", this._diffuseTexture);
11011099
}
11021100

11031101
if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {
11041102
if (defines.REFLECTIONBLUR && defines.TEXTURELODSUPPORT) {
1105-
uniformBuffer.setTexture("reflectionSampler", reflectionTexture);
1103+
this._uniformBuffer.setTexture("reflectionSampler", reflectionTexture);
11061104
}
11071105
else if (!defines.REFLECTIONBLUR) {
1108-
uniformBuffer.setTexture("reflectionSampler", reflectionTexture);
1106+
this._uniformBuffer.setTexture("reflectionSampler", reflectionTexture);
11091107
}
11101108
else {
1111-
uniformBuffer.setTexture("reflectionSampler", reflectionTexture._lodTextureMid || reflectionTexture);
1112-
uniformBuffer.setTexture("reflectionSamplerLow", reflectionTexture._lodTextureLow || reflectionTexture);
1113-
uniformBuffer.setTexture("reflectionSamplerHigh", reflectionTexture._lodTextureHigh || reflectionTexture);
1109+
this._uniformBuffer.setTexture("reflectionSampler", reflectionTexture._lodTextureMid || reflectionTexture);
1110+
this._uniformBuffer.setTexture("reflectionSamplerLow", reflectionTexture._lodTextureLow || reflectionTexture);
1111+
this._uniformBuffer.setTexture("reflectionSamplerHigh", reflectionTexture._lodTextureHigh || reflectionTexture);
11141112
}
11151113

11161114
if (defines.REFLECTIONFRESNEL) {
1117-
uniformBuffer.updateFloat3("vBackgroundCenter", this.sceneCenter.x, this.sceneCenter.y, this.sceneCenter.z);
1118-
uniformBuffer.updateFloat4("vReflectionControl", this._reflectionControls.x, this._reflectionControls.y, this._reflectionControls.z, this._reflectionControls.w);
1115+
this._uniformBuffer.updateFloat3("vBackgroundCenter", this.sceneCenter.x, this.sceneCenter.y, this.sceneCenter.z);
1116+
this._uniformBuffer.updateFloat4("vReflectionControl", this._reflectionControls.x, this._reflectionControls.y, this._reflectionControls.z, this._reflectionControls.w);
11191117
}
11201118
}
11211119
}
@@ -1143,7 +1141,7 @@ export class BackgroundMaterial extends PushMaterial {
11431141
}
11441142
}
11451143

1146-
uniformBuffer.update();
1144+
this._uniformBuffer.update();
11471145

11481146
this._afterBind(mesh, this._activeEffect);
11491147
}

0 commit comments

Comments
 (0)