@babylonjs/materials 5.0.0-alpha.8 → 5.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cell/cell.fragment.js +15 -15
- package/cell/cell.fragment.js.map +1 -1
- package/cell/cell.vertex.d.ts +2 -0
- package/cell/cell.vertex.js +16 -14
- package/cell/cell.vertex.js.map +1 -1
- package/cell/cellMaterial.d.ts +1 -1
- package/cell/cellMaterial.js +22 -20
- package/cell/cellMaterial.js.map +1 -1
- package/cell/index.js +1 -1
- package/custom/customMaterial.d.ts +4 -2
- package/custom/customMaterial.js +10 -5
- package/custom/customMaterial.js.map +1 -1
- package/custom/index.js +2 -2
- package/custom/pbrCustomMaterial.d.ts +6 -2
- package/custom/pbrCustomMaterial.js +19 -8
- package/custom/pbrCustomMaterial.js.map +1 -1
- package/fire/fire.fragment.js +9 -9
- package/fire/fire.fragment.js.map +1 -1
- package/fire/fire.vertex.d.ts +2 -0
- package/fire/fire.vertex.js +13 -11
- package/fire/fire.vertex.js.map +1 -1
- package/fire/fireMaterial.d.ts +1 -1
- package/fire/fireMaterial.js +23 -21
- package/fire/fireMaterial.js.map +1 -1
- package/fire/index.js +1 -1
- package/fur/fur.fragment.js +15 -15
- package/fur/fur.fragment.js.map +1 -1
- package/fur/fur.vertex.d.ts +2 -0
- package/fur/fur.vertex.js +16 -14
- package/fur/fur.vertex.js.map +1 -1
- package/fur/furMaterial.d.ts +1 -1
- package/fur/furMaterial.js +26 -24
- package/fur/furMaterial.js.map +1 -1
- package/fur/index.js +1 -1
- package/gradient/gradient.fragment.js +15 -15
- package/gradient/gradient.fragment.js.map +1 -1
- package/gradient/gradient.vertex.d.ts +2 -0
- package/gradient/gradient.vertex.js +16 -14
- package/gradient/gradient.vertex.js.map +1 -1
- package/gradient/gradientMaterial.d.ts +1 -1
- package/gradient/gradientMaterial.js +21 -19
- package/gradient/gradientMaterial.js.map +1 -1
- package/gradient/index.js +1 -1
- package/grid/grid.fragment.js +6 -6
- package/grid/grid.fragment.js.map +1 -1
- package/grid/grid.vertex.js +7 -7
- package/grid/grid.vertex.js.map +1 -1
- package/grid/gridMaterial.d.ts +5 -1
- package/grid/gridMaterial.js +33 -19
- package/grid/gridMaterial.js.map +1 -1
- package/grid/index.js +1 -1
- package/index.d.ts +15 -15
- package/index.js +15 -15
- package/index.js.map +1 -1
- package/lava/index.js +1 -1
- package/lava/lava.fragment.js +15 -15
- package/lava/lava.fragment.js.map +1 -1
- package/lava/lava.vertex.d.ts +2 -0
- package/lava/lava.vertex.js +16 -14
- package/lava/lava.vertex.js.map +1 -1
- package/lava/lavaMaterial.d.ts +1 -1
- package/lava/lavaMaterial.js +22 -20
- package/lava/lavaMaterial.js.map +1 -1
- package/legacy/legacy-cell.js +2 -2
- package/legacy/legacy-custom.js +2 -2
- package/legacy/legacy-fire.js +2 -2
- package/legacy/legacy-fur.js +2 -2
- package/legacy/legacy-gradient.js +2 -2
- package/legacy/legacy-grid.js +2 -2
- package/legacy/legacy-lava.js +2 -2
- package/legacy/legacy-mix.js +2 -2
- package/legacy/legacy-normal.js +2 -2
- package/legacy/legacy-shadowOnly.js +2 -2
- package/legacy/legacy-simple.d.ts +1 -1
- package/legacy/legacy-simple.js +2 -2
- package/legacy/legacy-simple.js.map +1 -1
- package/legacy/legacy-sky.d.ts +1 -1
- package/legacy/legacy-sky.js +2 -2
- package/legacy/legacy-sky.js.map +1 -1
- package/legacy/legacy-terrain.d.ts +1 -1
- package/legacy/legacy-terrain.js +2 -2
- package/legacy/legacy-terrain.js.map +1 -1
- package/legacy/legacy-triPlanar.d.ts +1 -1
- package/legacy/legacy-triPlanar.js +2 -2
- package/legacy/legacy-triPlanar.js.map +1 -1
- package/legacy/legacy-water.d.ts +1 -1
- package/legacy/legacy-water.js +2 -2
- package/legacy/legacy-water.js.map +1 -1
- package/legacy/legacy.js +2 -2
- package/mix/index.js +1 -1
- package/mix/mix.fragment.js +15 -15
- package/mix/mix.fragment.js.map +1 -1
- package/mix/mix.vertex.d.ts +2 -0
- package/mix/mix.vertex.js +16 -14
- package/mix/mix.vertex.js.map +1 -1
- package/mix/mixMaterial.d.ts +1 -1
- package/mix/mixMaterial.js +22 -20
- package/mix/mixMaterial.js.map +1 -1
- package/normal/index.js +1 -1
- package/normal/normal.fragment.js +15 -15
- package/normal/normal.fragment.js.map +1 -1
- package/normal/normal.vertex.d.ts +2 -0
- package/normal/normal.vertex.js +16 -14
- package/normal/normal.vertex.js.map +1 -1
- package/normal/normalMaterial.d.ts +1 -1
- package/normal/normalMaterial.js +21 -20
- package/normal/normalMaterial.js.map +1 -1
- package/package.json +3 -3
- package/shadowOnly/index.js +1 -1
- package/shadowOnly/shadowOnly.fragment.js +14 -14
- package/shadowOnly/shadowOnly.fragment.js.map +1 -1
- package/shadowOnly/shadowOnly.vertex.d.ts +2 -0
- package/shadowOnly/shadowOnly.vertex.js +16 -14
- package/shadowOnly/shadowOnly.vertex.js.map +1 -1
- package/shadowOnly/shadowOnlyMaterial.d.ts +1 -1
- package/shadowOnly/shadowOnlyMaterial.js +20 -19
- package/shadowOnly/shadowOnlyMaterial.js.map +1 -1
- package/simple/index.js +1 -1
- package/simple/simple.fragment.js +15 -15
- package/simple/simple.fragment.js.map +1 -1
- package/simple/simple.vertex.d.ts +2 -0
- package/simple/simple.vertex.js +16 -14
- package/simple/simple.vertex.js.map +1 -1
- package/simple/simpleMaterial.d.ts +1 -1
- package/simple/simpleMaterial.js +22 -20
- package/simple/simpleMaterial.js.map +1 -1
- package/sky/index.js +1 -1
- package/sky/sky.fragment.js +8 -8
- package/sky/sky.fragment.js.map +1 -1
- package/sky/sky.vertex.js +7 -7
- package/sky/sky.vertex.js.map +1 -1
- package/sky/skyMaterial.d.ts +1 -1
- package/sky/skyMaterial.js +25 -21
- package/sky/skyMaterial.js.map +1 -1
- package/terrain/index.js +1 -1
- package/terrain/terrain.fragment.js +15 -15
- package/terrain/terrain.fragment.js.map +1 -1
- package/terrain/terrain.vertex.d.ts +2 -0
- package/terrain/terrain.vertex.js +16 -14
- package/terrain/terrain.vertex.js.map +1 -1
- package/terrain/terrainMaterial.d.ts +1 -1
- package/terrain/terrainMaterial.js +22 -20
- package/terrain/terrainMaterial.js.map +1 -1
- package/triPlanar/index.js +1 -1
- package/triPlanar/triPlanarMaterial.d.ts +1 -1
- package/triPlanar/triPlanarMaterial.js +22 -20
- package/triPlanar/triPlanarMaterial.js.map +1 -1
- package/triPlanar/triplanar.fragment.js +15 -15
- package/triPlanar/triplanar.fragment.js.map +1 -1
- package/triPlanar/triplanar.vertex.d.ts +2 -0
- package/triPlanar/triplanar.vertex.js +16 -14
- package/triPlanar/triplanar.vertex.js.map +1 -1
- package/water/index.js +1 -1
- package/water/water.fragment.js +17 -17
- package/water/water.fragment.js.map +1 -1
- package/water/water.vertex.d.ts +2 -0
- package/water/water.vertex.js +18 -16
- package/water/water.vertex.js.map +1 -1
- package/water/waterMaterial.d.ts +1 -1
- package/water/waterMaterial.js +34 -31
- package/water/waterMaterial.js.map +1 -1
@@ -1,15 +1,15 @@
|
|
1
1
|
import { __extends } from "tslib";
|
2
|
-
import { SerializationHelper } from "@babylonjs/core/Misc/decorators";
|
3
|
-
import { Color3 } from "@babylonjs/core/Maths/math.color";
|
4
|
-
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines";
|
5
|
-
import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper";
|
6
|
-
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial";
|
7
|
-
import { VertexBuffer } from "@babylonjs/core/
|
8
|
-
import { Scene } from "@babylonjs/core/scene";
|
9
|
-
import {
|
10
|
-
import "./shadowOnly.fragment";
|
11
|
-
import "./shadowOnly.vertex";
|
12
|
-
import { EffectFallbacks } from '@babylonjs/core/Materials/effectFallbacks';
|
2
|
+
import { SerializationHelper } from "@babylonjs/core/Misc/decorators.js";
|
3
|
+
import { Color3 } from "@babylonjs/core/Maths/math.color.js";
|
4
|
+
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
|
5
|
+
import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper.js";
|
6
|
+
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
7
|
+
import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
8
|
+
import { Scene } from "@babylonjs/core/scene.js";
|
9
|
+
import { RegisterClass } from '@babylonjs/core/Misc/typeStore.js';
|
10
|
+
import "./shadowOnly.fragment.js";
|
11
|
+
import "./shadowOnly.vertex.js";
|
12
|
+
import { EffectFallbacks } from '@babylonjs/core/Materials/effectFallbacks.js';
|
13
13
|
var ShadowOnlyMaterialDefines = /** @class */ (function (_super) {
|
14
14
|
__extends(ShadowOnlyMaterialDefines, _super);
|
15
15
|
function ShadowOnlyMaterialDefines() {
|
@@ -27,6 +27,7 @@ var ShadowOnlyMaterialDefines = /** @class */ (function (_super) {
|
|
27
27
|
_this.BonesPerMesh = 0;
|
28
28
|
_this.INSTANCES = false;
|
29
29
|
_this.IMAGEPROCESSINGPOSTPROCESS = false;
|
30
|
+
_this.SKIPFINALCOLORCLAMP = false;
|
30
31
|
_this.rebuild();
|
31
32
|
return _this;
|
32
33
|
}
|
@@ -76,10 +77,10 @@ var ShadowOnlyMaterial = /** @class */ (function (_super) {
|
|
76
77
|
return true;
|
77
78
|
}
|
78
79
|
}
|
79
|
-
if (!subMesh.
|
80
|
-
subMesh.
|
80
|
+
if (!subMesh.materialDefines) {
|
81
|
+
subMesh.materialDefines = new ShadowOnlyMaterialDefines();
|
81
82
|
}
|
82
|
-
var defines = subMesh.
|
83
|
+
var defines = subMesh.materialDefines;
|
83
84
|
var scene = this.getScene();
|
84
85
|
if (this._isReadyForSubMesh(subMesh)) {
|
85
86
|
return true;
|
@@ -160,7 +161,7 @@ var ShadowOnlyMaterial = /** @class */ (function (_super) {
|
|
160
161
|
onCompiled: this.onCompiled,
|
161
162
|
onError: this.onError,
|
162
163
|
indexParameters: { maxSimultaneousLights: 1 }
|
163
|
-
}, engine), defines);
|
164
|
+
}, engine), defines, this._materialContext);
|
164
165
|
}
|
165
166
|
if (!subMesh.effect || !subMesh.effect.isReady()) {
|
166
167
|
return false;
|
@@ -171,7 +172,7 @@ var ShadowOnlyMaterial = /** @class */ (function (_super) {
|
|
171
172
|
};
|
172
173
|
ShadowOnlyMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
|
173
174
|
var scene = this.getScene();
|
174
|
-
var defines = subMesh.
|
175
|
+
var defines = subMesh.materialDefines;
|
175
176
|
if (!defines) {
|
176
177
|
return;
|
177
178
|
}
|
@@ -194,7 +195,7 @@ var ShadowOnlyMaterial = /** @class */ (function (_super) {
|
|
194
195
|
}
|
195
196
|
this._activeEffect.setFloat("alpha", this.alpha);
|
196
197
|
this._activeEffect.setColor3("shadowColor", this.shadowColor);
|
197
|
-
|
198
|
+
scene.bindEyePosition(effect);
|
198
199
|
}
|
199
200
|
// Lights
|
200
201
|
if (scene.lightsEnabled) {
|
@@ -222,7 +223,7 @@ var ShadowOnlyMaterial = /** @class */ (function (_super) {
|
|
222
223
|
return SerializationHelper.Clone(function () { return new ShadowOnlyMaterial(name, _this.getScene()); }, this);
|
223
224
|
};
|
224
225
|
ShadowOnlyMaterial.prototype.serialize = function () {
|
225
|
-
var serializationObject =
|
226
|
+
var serializationObject = _super.prototype.serialize.call(this);
|
226
227
|
serializationObject.customType = "BABYLON.ShadowOnlyMaterial";
|
227
228
|
return serializationObject;
|
228
229
|
};
|
@@ -236,5 +237,5 @@ var ShadowOnlyMaterial = /** @class */ (function (_super) {
|
|
236
237
|
return ShadowOnlyMaterial;
|
237
238
|
}(PushMaterial));
|
238
239
|
export { ShadowOnlyMaterial };
|
239
|
-
|
240
|
+
RegisterClass("BABYLON.ShadowOnlyMaterial", ShadowOnlyMaterial);
|
240
241
|
//# sourceMappingURL=shadowOnlyMaterial.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"shadowOnlyMaterial.js","sourceRoot":"","sources":["../../../sourceES6/materialsLibrary/src/shadowOnly/shadowOnlyMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { SerializationHelper } from \"@babylonjs/core/Misc/decorators\";\r\nimport { Matrix } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { Color3 } from \"@babylonjs/core/Maths/math.color\";\r\nimport { BaseTexture } from \"@babylonjs/core/Materials/Textures/baseTexture\";\r\nimport { IShadowLight } from \"@babylonjs/core/Lights/shadowLight\";\r\nimport { IEffectCreationOptions } from \"@babylonjs/core/Materials/effect\";\r\nimport { MaterialDefines } from \"@babylonjs/core/Materials/materialDefines\";\r\nimport { MaterialHelper } from \"@babylonjs/core/Materials/materialHelper\";\r\nimport { PushMaterial } from \"@babylonjs/core/Materials/pushMaterial\";\r\nimport { VertexBuffer } from \"@babylonjs/core/Meshes/buffer\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { SubMesh } from \"@babylonjs/core/Meshes/subMesh\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\nimport { _TypeStore } from '@babylonjs/core/Misc/typeStore';\r\n\r\nimport \"./shadowOnly.fragment\";\r\nimport \"./shadowOnly.vertex\";\r\nimport { EffectFallbacks } from '@babylonjs/core/Materials/effectFallbacks';\r\nimport { CascadedShadowGenerator } from '@babylonjs/core/Lights/Shadows/cascadedShadowGenerator';\r\n\r\nclass ShadowOnlyMaterialDefines extends MaterialDefines {\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public POINTSIZE = false;\r\n public FOG = false;\r\n public NORMAL = false;\r\n public NUM_BONE_INFLUENCERS = 0;\r\n public BonesPerMesh = 0;\r\n public INSTANCES = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class ShadowOnlyMaterial extends PushMaterial {\r\n private _activeLight: IShadowLight;\r\n private _needAlphaBlending = true;\r\n\r\n constructor(name: string, scene: Scene) {\r\n super(name, scene);\r\n }\r\n\r\n public shadowColor = Color3.Black();\r\n\r\n public needAlphaBlending(): boolean {\r\n return this._needAlphaBlending;\r\n }\r\n\r\n public needAlphaTesting(): boolean {\r\n return false;\r\n }\r\n\r\n public getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n public get activeLight(): IShadowLight {\r\n return this._activeLight;\r\n }\r\n\r\n public set activeLight(light: IShadowLight) {\r\n this._activeLight = light;\r\n }\r\n\r\n private _getFirstShadowLightForMesh(mesh: AbstractMesh): Nullable<IShadowLight> {\r\n for (var light of mesh.lightSources) {\r\n if (light.shadowEnabled) {\r\n return light as IShadowLight;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n // Methods\r\n public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n if (this.isFrozen) {\r\n if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh._materialDefines) {\r\n subMesh._materialDefines = new ShadowOnlyMaterialDefines();\r\n }\r\n\r\n var defines = <ShadowOnlyMaterialDefines>subMesh._materialDefines;\r\n var scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n var engine = scene.getEngine();\r\n\r\n // Ensure that active light is the first shadow light\r\n if (this._activeLight) {\r\n for (var light of mesh.lightSources) {\r\n if (light.shadowEnabled) {\r\n if (this._activeLight === light) {\r\n break; // We are good\r\n }\r\n\r\n var lightPosition = mesh.lightSources.indexOf(this._activeLight);\r\n\r\n if (lightPosition !== -1) {\r\n mesh.lightSources.splice(lightPosition, 1);\r\n mesh.lightSources.splice(0, 0, this._activeLight);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n MaterialHelper.PrepareDefinesForFrameBoundValues(scene, engine, defines, useInstances ? true : false);\r\n\r\n MaterialHelper.PrepareDefinesForMisc(mesh, scene, false, this.pointsCloud, this.fogEnabled, this._shouldTurnAlphaTestOn(mesh), defines);\r\n\r\n defines._needNormals = MaterialHelper.PrepareDefinesForLights(scene, mesh, defines, false, 1);\r\n\r\n const shadowGenerator = this._getFirstShadowLightForMesh(mesh)?.getShadowGenerator();\r\n\r\n this._needAlphaBlending = true;\r\n\r\n if (shadowGenerator && (shadowGenerator as any).getClassName && (shadowGenerator as any).getClassName() === 'CascadedShadowGenerator') {\r\n const csg = shadowGenerator as CascadedShadowGenerator;\r\n\r\n this._needAlphaBlending = !csg.autoCalcDepthBounds;\r\n }\r\n\r\n // Attribs\r\n MaterialHelper.PrepareDefinesForAttributes(mesh, defines, false, true);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n var fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n MaterialHelper.HandleFallbacksForShadows(defines, fallbacks, 1);\r\n\r\n if (defines.NUM_BONE_INFLUENCERS > 0) {\r\n fallbacks.addCPUSkinningFallback(0, mesh);\r\n }\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n var attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n MaterialHelper.PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n MaterialHelper.PrepareAttributesForInstances(attribs, defines);\r\n\r\n var shaderName = \"shadowOnly\";\r\n var join = defines.toString();\r\n var uniforms = [\"world\", \"view\", \"viewProjection\", \"vEyePosition\", \"vLightsType\",\r\n \"vFogInfos\", \"vFogColor\", \"pointSize\", \"alpha\", \"shadowColor\",\r\n \"mBones\",\r\n \"vClipPlane\", \"vClipPlane2\", \"vClipPlane3\", \"vClipPlane4\", \"vClipPlane5\", \"vClipPlane6\"\r\n ];\r\n var samplers = new Array<string>();\r\n\r\n var uniformBuffers = new Array<string>();\r\n\r\n MaterialHelper.PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 1\r\n });\r\n\r\n subMesh.setEffect(scene.getEngine().createEffect(shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 1 }\r\n }, engine), defines);\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n subMesh.effect._wasPreviouslyReady = true;\r\n\r\n return true;\r\n }\r\n\r\n public bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n var scene = this.getScene();\r\n\r\n var defines = <ShadowOnlyMaterialDefines>subMesh._materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n var effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n\r\n // Bones\r\n MaterialHelper.BindBonesParameters(mesh, this._activeEffect);\r\n\r\n if (this._mustRebind(scene, effect)) {\r\n // Clip plane\r\n MaterialHelper.BindClipPlane(this._activeEffect, scene);\r\n\r\n // Point size\r\n if (this.pointsCloud) {\r\n this._activeEffect.setFloat(\"pointSize\", this.pointSize);\r\n }\r\n\r\n this._activeEffect.setFloat(\"alpha\", this.alpha);\r\n this._activeEffect.setColor3(\"shadowColor\", this.shadowColor);\r\n\r\n MaterialHelper.BindEyePosition(effect, scene);\r\n }\r\n\r\n // Lights\r\n if (scene.lightsEnabled) {\r\n MaterialHelper.BindLights(scene, mesh, this._activeEffect, defines, 1);\r\n\r\n const light = this._getFirstShadowLightForMesh(mesh);\r\n\r\n if (light) {\r\n // Make sure the uniforms for this light will be rebound for other materials using this light when rendering the current frame.\r\n // Indeed, there is an optimization in Light that binds the light uniforms only once per frame for a given light (if using ubo).\r\n // Doing this way assumes that all uses of this light are the same, meaning all parameters passed to Light._bindLlight\r\n // are the same, notably useSpecular. However, isReadyForSubMesh (see above) is passing false for this parameter, which may not be\r\n // the value the other materials may pass.\r\n light._renderId = -1;\r\n }\r\n }\r\n\r\n // View\r\n if (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE || defines[\"SHADOWCSM0\"]) {\r\n this._activeEffect.setMatrix(\"view\", scene.getViewMatrix());\r\n }\r\n\r\n // Fog\r\n MaterialHelper.BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._afterBind(mesh, this._activeEffect);\r\n }\r\n\r\n public clone(name: string): ShadowOnlyMaterial {\r\n return SerializationHelper.Clone<ShadowOnlyMaterial>(() => new ShadowOnlyMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public serialize(): any {\r\n var serializationObject = SerializationHelper.Serialize(this);\r\n serializationObject.customType = \"BABYLON.ShadowOnlyMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public getClassName(): string {\r\n return \"ShadowOnlyMaterial\";\r\n }\r\n\r\n // Statics\r\n public static Parse(source: any, scene: Scene, rootUrl: string): ShadowOnlyMaterial {\r\n return SerializationHelper.Parse(() => new ShadowOnlyMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\n_TypeStore.RegisteredTypes[\"BABYLON.ShadowOnlyMaterial\"] = ShadowOnlyMaterial;"]}
|
1
|
+
{"version":3,"file":"shadowOnlyMaterial.js","sourceRoot":"","sources":["../../../sourceES6/materialsLibrary/src/shadowOnly/shadowOnlyMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { SerializationHelper } from \"@babylonjs/core/Misc/decorators\";\r\nimport { Matrix } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { Color3 } from \"@babylonjs/core/Maths/math.color\";\r\nimport { BaseTexture } from \"@babylonjs/core/Materials/Textures/baseTexture\";\r\nimport { IShadowLight } from \"@babylonjs/core/Lights/shadowLight\";\r\nimport { IEffectCreationOptions } from \"@babylonjs/core/Materials/effect\";\r\nimport { MaterialDefines } from \"@babylonjs/core/Materials/materialDefines\";\r\nimport { MaterialHelper } from \"@babylonjs/core/Materials/materialHelper\";\r\nimport { PushMaterial } from \"@babylonjs/core/Materials/pushMaterial\";\r\nimport { VertexBuffer } from \"@babylonjs/core/Buffers/buffer\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { SubMesh } from \"@babylonjs/core/Meshes/subMesh\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\nimport { RegisterClass } from '@babylonjs/core/Misc/typeStore';\r\n\r\nimport \"./shadowOnly.fragment\";\r\nimport \"./shadowOnly.vertex\";\r\nimport { EffectFallbacks } from '@babylonjs/core/Materials/effectFallbacks';\r\nimport { CascadedShadowGenerator } from '@babylonjs/core/Lights/Shadows/cascadedShadowGenerator';\r\n\r\nclass ShadowOnlyMaterialDefines extends MaterialDefines {\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public POINTSIZE = false;\r\n public FOG = false;\r\n public NORMAL = false;\r\n public NUM_BONE_INFLUENCERS = 0;\r\n public BonesPerMesh = 0;\r\n public INSTANCES = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n public SKIPFINALCOLORCLAMP = false;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class ShadowOnlyMaterial extends PushMaterial {\r\n private _activeLight: IShadowLight;\r\n private _needAlphaBlending = true;\r\n\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n }\r\n\r\n public shadowColor = Color3.Black();\r\n\r\n public needAlphaBlending(): boolean {\r\n return this._needAlphaBlending;\r\n }\r\n\r\n public needAlphaTesting(): boolean {\r\n return false;\r\n }\r\n\r\n public getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n public get activeLight(): IShadowLight {\r\n return this._activeLight;\r\n }\r\n\r\n public set activeLight(light: IShadowLight) {\r\n this._activeLight = light;\r\n }\r\n\r\n private _getFirstShadowLightForMesh(mesh: AbstractMesh): Nullable<IShadowLight> {\r\n for (var light of mesh.lightSources) {\r\n if (light.shadowEnabled) {\r\n return light as IShadowLight;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n // Methods\r\n public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n if (this.isFrozen) {\r\n if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new ShadowOnlyMaterialDefines();\r\n }\r\n\r\n var defines = <ShadowOnlyMaterialDefines>subMesh.materialDefines;\r\n var scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n var engine = scene.getEngine();\r\n\r\n // Ensure that active light is the first shadow light\r\n if (this._activeLight) {\r\n for (var light of mesh.lightSources) {\r\n if (light.shadowEnabled) {\r\n if (this._activeLight === light) {\r\n break; // We are good\r\n }\r\n\r\n var lightPosition = mesh.lightSources.indexOf(this._activeLight);\r\n\r\n if (lightPosition !== -1) {\r\n mesh.lightSources.splice(lightPosition, 1);\r\n mesh.lightSources.splice(0, 0, this._activeLight);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n MaterialHelper.PrepareDefinesForFrameBoundValues(scene, engine, defines, useInstances ? true : false);\r\n\r\n MaterialHelper.PrepareDefinesForMisc(mesh, scene, false, this.pointsCloud, this.fogEnabled, this._shouldTurnAlphaTestOn(mesh), defines);\r\n\r\n defines._needNormals = MaterialHelper.PrepareDefinesForLights(scene, mesh, defines, false, 1);\r\n\r\n const shadowGenerator = this._getFirstShadowLightForMesh(mesh)?.getShadowGenerator();\r\n\r\n this._needAlphaBlending = true;\r\n\r\n if (shadowGenerator && (shadowGenerator as any).getClassName && (shadowGenerator as any).getClassName() === 'CascadedShadowGenerator') {\r\n const csg = shadowGenerator as CascadedShadowGenerator;\r\n\r\n this._needAlphaBlending = !csg.autoCalcDepthBounds;\r\n }\r\n\r\n // Attribs\r\n MaterialHelper.PrepareDefinesForAttributes(mesh, defines, false, true);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n var fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n MaterialHelper.HandleFallbacksForShadows(defines, fallbacks, 1);\r\n\r\n if (defines.NUM_BONE_INFLUENCERS > 0) {\r\n fallbacks.addCPUSkinningFallback(0, mesh);\r\n }\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n var attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n MaterialHelper.PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n MaterialHelper.PrepareAttributesForInstances(attribs, defines);\r\n\r\n var shaderName = \"shadowOnly\";\r\n var join = defines.toString();\r\n var uniforms = [\"world\", \"view\", \"viewProjection\", \"vEyePosition\", \"vLightsType\",\r\n \"vFogInfos\", \"vFogColor\", \"pointSize\", \"alpha\", \"shadowColor\",\r\n \"mBones\",\r\n \"vClipPlane\", \"vClipPlane2\", \"vClipPlane3\", \"vClipPlane4\", \"vClipPlane5\", \"vClipPlane6\"\r\n ];\r\n var samplers = new Array<string>();\r\n\r\n var uniformBuffers = new Array<string>();\r\n\r\n MaterialHelper.PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 1\r\n });\r\n\r\n subMesh.setEffect(scene.getEngine().createEffect(shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 1 }\r\n }, engine), defines, this._materialContext);\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n subMesh.effect._wasPreviouslyReady = true;\r\n\r\n return true;\r\n }\r\n\r\n public bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n var scene = this.getScene();\r\n\r\n var defines = <ShadowOnlyMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n var effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n\r\n // Bones\r\n MaterialHelper.BindBonesParameters(mesh, this._activeEffect);\r\n\r\n if (this._mustRebind(scene, effect)) {\r\n // Clip plane\r\n MaterialHelper.BindClipPlane(this._activeEffect, scene);\r\n\r\n // Point size\r\n if (this.pointsCloud) {\r\n this._activeEffect.setFloat(\"pointSize\", this.pointSize);\r\n }\r\n\r\n this._activeEffect.setFloat(\"alpha\", this.alpha);\r\n this._activeEffect.setColor3(\"shadowColor\", this.shadowColor);\r\n\r\n scene.bindEyePosition(effect);\r\n }\r\n\r\n // Lights\r\n if (scene.lightsEnabled) {\r\n MaterialHelper.BindLights(scene, mesh, this._activeEffect, defines, 1);\r\n\r\n const light = this._getFirstShadowLightForMesh(mesh);\r\n\r\n if (light) {\r\n // Make sure the uniforms for this light will be rebound for other materials using this light when rendering the current frame.\r\n // Indeed, there is an optimization in Light that binds the light uniforms only once per frame for a given light (if using ubo).\r\n // Doing this way assumes that all uses of this light are the same, meaning all parameters passed to Light._bindLlight\r\n // are the same, notably useSpecular. However, isReadyForSubMesh (see above) is passing false for this parameter, which may not be\r\n // the value the other materials may pass.\r\n light._renderId = -1;\r\n }\r\n }\r\n\r\n // View\r\n if (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE || defines[\"SHADOWCSM0\"]) {\r\n this._activeEffect.setMatrix(\"view\", scene.getViewMatrix());\r\n }\r\n\r\n // Fog\r\n MaterialHelper.BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._afterBind(mesh, this._activeEffect);\r\n }\r\n\r\n public clone(name: string): ShadowOnlyMaterial {\r\n return SerializationHelper.Clone<ShadowOnlyMaterial>(() => new ShadowOnlyMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public serialize(): any {\r\n var serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.ShadowOnlyMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public getClassName(): string {\r\n return \"ShadowOnlyMaterial\";\r\n }\r\n\r\n // Statics\r\n public static Parse(source: any, scene: Scene, rootUrl: string): ShadowOnlyMaterial {\r\n return SerializationHelper.Parse(() => new ShadowOnlyMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ShadowOnlyMaterial\", ShadowOnlyMaterial);"]}
|
package/simple/index.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export * from "./simpleMaterial";
|
1
|
+
export * from "./simpleMaterial.js";
|
2
2
|
//# sourceMappingURL=index.js.map
|
@@ -1,19 +1,19 @@
|
|
1
|
-
import {
|
2
|
-
import "@babylonjs/core/Shaders/ShadersInclude/helperFunctions";
|
3
|
-
import "@babylonjs/core/Shaders/ShadersInclude/lightFragmentDeclaration";
|
4
|
-
import "@babylonjs/core/Shaders/ShadersInclude/lightUboDeclaration";
|
5
|
-
import "@babylonjs/core/Shaders/ShadersInclude/lightsFragmentFunctions";
|
6
|
-
import "@babylonjs/core/Shaders/ShadersInclude/shadowsFragmentFunctions";
|
7
|
-
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration";
|
8
|
-
import "@babylonjs/core/Shaders/ShadersInclude/fogFragmentDeclaration";
|
9
|
-
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragment";
|
10
|
-
import "@babylonjs/core/Shaders/ShadersInclude/depthPrePass";
|
11
|
-
import "@babylonjs/core/Shaders/ShadersInclude/lightFragment";
|
12
|
-
import "@babylonjs/core/Shaders/ShadersInclude/fogFragment";
|
13
|
-
import "@babylonjs/core/Shaders/ShadersInclude/imageProcessingCompatibility";
|
1
|
+
import { ShaderStore } from "@babylonjs/core/Engines/shaderStore.js";
|
2
|
+
import "@babylonjs/core/Shaders/ShadersInclude/helperFunctions.js";
|
3
|
+
import "@babylonjs/core/Shaders/ShadersInclude/lightFragmentDeclaration.js";
|
4
|
+
import "@babylonjs/core/Shaders/ShadersInclude/lightUboDeclaration.js";
|
5
|
+
import "@babylonjs/core/Shaders/ShadersInclude/lightsFragmentFunctions.js";
|
6
|
+
import "@babylonjs/core/Shaders/ShadersInclude/shadowsFragmentFunctions.js";
|
7
|
+
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js";
|
8
|
+
import "@babylonjs/core/Shaders/ShadersInclude/fogFragmentDeclaration.js";
|
9
|
+
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragment.js";
|
10
|
+
import "@babylonjs/core/Shaders/ShadersInclude/depthPrePass.js";
|
11
|
+
import "@babylonjs/core/Shaders/ShadersInclude/lightFragment.js";
|
12
|
+
import "@babylonjs/core/Shaders/ShadersInclude/fogFragment.js";
|
13
|
+
import "@babylonjs/core/Shaders/ShadersInclude/imageProcessingCompatibility.js";
|
14
14
|
var name = 'simplePixelShader';
|
15
|
-
var shader = "precision highp float;\n\nuniform vec4 vEyePosition;\nuniform vec4 vDiffuseColor;\n\nvarying vec3 vPositionW;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#
|
16
|
-
|
15
|
+
var shader = "precision highp float;\n\nuniform vec4 vEyePosition;\nuniform vec4 vDiffuseColor;\n\nvarying vec3 vPositionW;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR)\nvarying vec4 vColor;\n#endif\n\n#include<helperFunctions>\n\n#include<__decl__lightFragment>[0..maxSimultaneousLights]\n#include<lightsFragmentFunctions>\n#include<shadowsFragmentFunctions>\n\n#ifdef DIFFUSE\nvarying vec2 vDiffuseUV;\nuniform sampler2D diffuseSampler;\nuniform vec2 vDiffuseInfos;\n#endif\n#include<clipPlaneFragmentDeclaration>\n\n#include<fogFragmentDeclaration>\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\nvec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);\n\nvec4 baseColor=vec4(1.,1.,1.,1.);\nvec3 diffuseColor=vDiffuseColor.rgb;\n\nfloat alpha=vDiffuseColor.a;\n#ifdef DIFFUSE\nbaseColor=texture2D(diffuseSampler,vDiffuseUV);\n#ifdef ALPHATEST\nif (baseColor.a<0.4)\ndiscard;\n#endif\n#include<depthPrePass>\nbaseColor.rgb*=vDiffuseInfos.y;\n#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR)\nbaseColor.rgb*=vColor.rgb;\n#endif\n\n#ifdef NORMAL\nvec3 normalW=normalize(vNormalW);\n#else\nvec3 normalW=vec3(1.0,1.0,1.0);\n#endif\n\nvec3 diffuseBase=vec3(0.,0.,0.);\nlightingInfo info;\nfloat shadow=1.;\nfloat glossiness=0.;\n#ifdef SPECULARTERM\nvec3 specularBase=vec3(0.,0.,0.);\n#endif\n#include<lightFragment>[0..maxSimultaneousLights]\n#ifdef VERTEXALPHA\nalpha*=vColor.a;\n#endif\nvec3 finalDiffuse=clamp(diffuseBase*diffuseColor,0.0,1.0)*baseColor.rgb;\n\nvec4 color=vec4(finalDiffuse,alpha);\n#include<fogFragment>\ngl_FragColor=color;\n#include<imageProcessingCompatibility>\n#define CUSTOM_FRAGMENT_MAIN_END\n}";
|
16
|
+
ShaderStore.ShadersStore[name] = shader;
|
17
17
|
/** @hidden */
|
18
18
|
export var simplePixelShader = { name: name, shader: shader };
|
19
19
|
//# sourceMappingURL=simple.fragment.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"simple.fragment.js","sourceRoot":"","sources":["../../../sourceES6/materialsLibrary/src/simple/simple.fragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"simple.fragment.js","sourceRoot":"","sources":["../../../sourceES6/materialsLibrary/src/simple/simple.fragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,wDAAwD,CAAC;AAChE,OAAO,iEAAiE,CAAC;AACzE,OAAO,4DAA4D,CAAC;AACpE,OAAO,gEAAgE,CAAC;AACxE,OAAO,iEAAiE,CAAC;AACzE,OAAO,qEAAqE,CAAC;AAC7E,OAAO,+DAA+D,CAAC;AACvE,OAAO,0DAA0D,CAAC;AAClE,OAAO,qDAAqD,CAAC;AAC7D,OAAO,sDAAsD,CAAC;AAC9D,OAAO,oDAAoD,CAAC;AAC5D,OAAO,qEAAqE,CAAC;AAE7E,IAAI,IAAI,GAAG,mBAAmB,CAAC;AAC/B,IAAI,MAAM,GAAG,wtDA0EX,CAAC;AAEH,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,cAAc;AACd,MAAM,CAAC,IAAI,iBAAiB,GAAG,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC","sourcesContent":["import { ShaderStore } from \"@babylonjs/core/Engines/shaderStore\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/helperFunctions\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/lightFragmentDeclaration\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/lightUboDeclaration\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/lightsFragmentFunctions\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/shadowsFragmentFunctions\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/fogFragmentDeclaration\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragment\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/depthPrePass\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/lightFragment\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/fogFragment\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/imageProcessingCompatibility\";\n\nlet name = 'simplePixelShader';\nlet shader = `precision highp float;\n\nuniform vec4 vEyePosition;\nuniform vec4 vDiffuseColor;\n\nvarying vec3 vPositionW;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR)\nvarying vec4 vColor;\n#endif\n\n#include<helperFunctions>\n\n#include<__decl__lightFragment>[0..maxSimultaneousLights]\n#include<lightsFragmentFunctions>\n#include<shadowsFragmentFunctions>\n\n#ifdef DIFFUSE\nvarying vec2 vDiffuseUV;\nuniform sampler2D diffuseSampler;\nuniform vec2 vDiffuseInfos;\n#endif\n#include<clipPlaneFragmentDeclaration>\n\n#include<fogFragmentDeclaration>\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\nvec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);\n\nvec4 baseColor=vec4(1.,1.,1.,1.);\nvec3 diffuseColor=vDiffuseColor.rgb;\n\nfloat alpha=vDiffuseColor.a;\n#ifdef DIFFUSE\nbaseColor=texture2D(diffuseSampler,vDiffuseUV);\n#ifdef ALPHATEST\nif (baseColor.a<0.4)\ndiscard;\n#endif\n#include<depthPrePass>\nbaseColor.rgb*=vDiffuseInfos.y;\n#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR)\nbaseColor.rgb*=vColor.rgb;\n#endif\n\n#ifdef NORMAL\nvec3 normalW=normalize(vNormalW);\n#else\nvec3 normalW=vec3(1.0,1.0,1.0);\n#endif\n\nvec3 diffuseBase=vec3(0.,0.,0.);\nlightingInfo info;\nfloat shadow=1.;\nfloat glossiness=0.;\n#ifdef SPECULARTERM\nvec3 specularBase=vec3(0.,0.,0.);\n#endif\n#include<lightFragment>[0..maxSimultaneousLights]\n#ifdef VERTEXALPHA\nalpha*=vColor.a;\n#endif\nvec3 finalDiffuse=clamp(diffuseBase*diffuseColor,0.0,1.0)*baseColor.rgb;\n\nvec4 color=vec4(finalDiffuse,alpha);\n#include<fogFragment>\ngl_FragColor=color;\n#include<imageProcessingCompatibility>\n#define CUSTOM_FRAGMENT_MAIN_END\n}`;\n\nShaderStore.ShadersStore[name] = shader;\n/** @hidden */\nexport var simplePixelShader = { name, shader };\n"]}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import "@babylonjs/core/Shaders/ShadersInclude/bonesDeclaration";
|
2
|
+
import "@babylonjs/core/Shaders/ShadersInclude/bakedVertexAnimationDeclaration";
|
2
3
|
import "@babylonjs/core/Shaders/ShadersInclude/instancesDeclaration";
|
3
4
|
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneVertexDeclaration";
|
4
5
|
import "@babylonjs/core/Shaders/ShadersInclude/fogVertexDeclaration";
|
@@ -6,6 +7,7 @@ import "@babylonjs/core/Shaders/ShadersInclude/lightFragmentDeclaration";
|
|
6
7
|
import "@babylonjs/core/Shaders/ShadersInclude/lightUboDeclaration";
|
7
8
|
import "@babylonjs/core/Shaders/ShadersInclude/instancesVertex";
|
8
9
|
import "@babylonjs/core/Shaders/ShadersInclude/bonesVertex";
|
10
|
+
import "@babylonjs/core/Shaders/ShadersInclude/bakedVertexAnimation";
|
9
11
|
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneVertex";
|
10
12
|
import "@babylonjs/core/Shaders/ShadersInclude/fogVertex";
|
11
13
|
import "@babylonjs/core/Shaders/ShadersInclude/shadowsVertex";
|
package/simple/simple.vertex.js
CHANGED
@@ -1,18 +1,20 @@
|
|
1
|
-
import {
|
2
|
-
import "@babylonjs/core/Shaders/ShadersInclude/bonesDeclaration";
|
3
|
-
import "@babylonjs/core/Shaders/ShadersInclude/
|
4
|
-
import "@babylonjs/core/Shaders/ShadersInclude/
|
5
|
-
import "@babylonjs/core/Shaders/ShadersInclude/
|
6
|
-
import "@babylonjs/core/Shaders/ShadersInclude/
|
7
|
-
import "@babylonjs/core/Shaders/ShadersInclude/
|
8
|
-
import "@babylonjs/core/Shaders/ShadersInclude/
|
9
|
-
import "@babylonjs/core/Shaders/ShadersInclude/
|
10
|
-
import "@babylonjs/core/Shaders/ShadersInclude/
|
11
|
-
import "@babylonjs/core/Shaders/ShadersInclude/
|
12
|
-
import "@babylonjs/core/Shaders/ShadersInclude/
|
1
|
+
import { ShaderStore } from "@babylonjs/core/Engines/shaderStore.js";
|
2
|
+
import "@babylonjs/core/Shaders/ShadersInclude/bonesDeclaration.js";
|
3
|
+
import "@babylonjs/core/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js";
|
4
|
+
import "@babylonjs/core/Shaders/ShadersInclude/instancesDeclaration.js";
|
5
|
+
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js";
|
6
|
+
import "@babylonjs/core/Shaders/ShadersInclude/fogVertexDeclaration.js";
|
7
|
+
import "@babylonjs/core/Shaders/ShadersInclude/lightFragmentDeclaration.js";
|
8
|
+
import "@babylonjs/core/Shaders/ShadersInclude/lightUboDeclaration.js";
|
9
|
+
import "@babylonjs/core/Shaders/ShadersInclude/instancesVertex.js";
|
10
|
+
import "@babylonjs/core/Shaders/ShadersInclude/bonesVertex.js";
|
11
|
+
import "@babylonjs/core/Shaders/ShadersInclude/bakedVertexAnimation.js";
|
12
|
+
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneVertex.js";
|
13
|
+
import "@babylonjs/core/Shaders/ShadersInclude/fogVertex.js";
|
14
|
+
import "@babylonjs/core/Shaders/ShadersInclude/shadowsVertex.js";
|
13
15
|
var name = 'simpleVertexShader';
|
14
|
-
var shader = "precision highp float;\n\nattribute vec3 position;\n#ifdef NORMAL\nattribute vec3 normal;\n#endif\n#ifdef UV1\nattribute vec2 uv;\n#endif\n#ifdef UV2\nattribute vec2 uv2;\n#endif\n#ifdef VERTEXCOLOR\nattribute vec4 color;\n#endif\n#include<bonesDeclaration>\n\n#include<instancesDeclaration>\nuniform mat4 view;\nuniform mat4 viewProjection;\n#ifdef DIFFUSE\nvarying vec2 vDiffuseUV;\nuniform mat4 diffuseMatrix;\nuniform vec2 vDiffuseInfos;\n#endif\n#ifdef POINTSIZE\nuniform float pointSize;\n#endif\n\nvarying vec3 vPositionW;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#
|
15
|
-
|
16
|
+
var shader = "precision highp float;\n\nattribute vec3 position;\n#ifdef NORMAL\nattribute vec3 normal;\n#endif\n#ifdef UV1\nattribute vec2 uv;\n#endif\n#ifdef UV2\nattribute vec2 uv2;\n#endif\n#ifdef VERTEXCOLOR\nattribute vec4 color;\n#endif\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n\n#include<instancesDeclaration>\nuniform mat4 view;\nuniform mat4 viewProjection;\n#ifdef DIFFUSE\nvarying vec2 vDiffuseUV;\nuniform mat4 diffuseMatrix;\nuniform vec2 vDiffuseInfos;\n#endif\n#ifdef POINTSIZE\nuniform float pointSize;\n#endif\n\nvarying vec3 vPositionW;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR)\nvarying vec4 vColor;\n#endif\n#include<clipPlaneVertexDeclaration>\n#include<fogVertexDeclaration>\n#include<__decl__lightFragment>[0..maxSimultaneousLights]\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\nvec4 worldPos=finalWorld*vec4(position,1.0);\ngl_Position=viewProjection*worldPos;\nvPositionW=vec3(worldPos);\n#ifdef NORMAL\nvNormalW=normalize(vec3(finalWorld*vec4(normal,0.0)));\n#endif\n\n#ifndef UV1\nvec2 uv=vec2(0.,0.);\n#endif\n#ifndef UV2\nvec2 uv2=vec2(0.,0.);\n#endif\n#ifdef DIFFUSE\nif (vDiffuseInfos.x == 0.)\n{\nvDiffuseUV=vec2(diffuseMatrix*vec4(uv,1.0,0.0));\n}\nelse\n{\nvDiffuseUV=vec2(diffuseMatrix*vec4(uv2,1.0,0.0));\n}\n#endif\n\n#include<clipPlaneVertex>\n\n#include<fogVertex>\n#include<shadowsVertex>[0..maxSimultaneousLights]\n\n#ifdef VERTEXCOLOR\nvColor=color;\n#elif INSTANCESCOLOR\nvColor=instanceColor;\n#endif\n\n#if defined(POINTSIZE) && !defined(WEBGPU)\ngl_PointSize=pointSize;\n#endif\n#define CUSTOM_VERTEX_MAIN_END\n}\n";
|
17
|
+
ShaderStore.ShadersStore[name] = shader;
|
16
18
|
/** @hidden */
|
17
19
|
export var simpleVertexShader = { name: name, shader: shader };
|
18
20
|
//# sourceMappingURL=simple.vertex.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"simple.vertex.js","sourceRoot":"","sources":["../../../sourceES6/materialsLibrary/src/simple/simple.vertex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"simple.vertex.js","sourceRoot":"","sources":["../../../sourceES6/materialsLibrary/src/simple/simple.vertex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,yDAAyD,CAAC;AACjE,OAAO,wEAAwE,CAAC;AAChF,OAAO,6DAA6D,CAAC;AACrE,OAAO,mEAAmE,CAAC;AAC3E,OAAO,6DAA6D,CAAC;AACrE,OAAO,iEAAiE,CAAC;AACzE,OAAO,4DAA4D,CAAC;AACpE,OAAO,wDAAwD,CAAC;AAChE,OAAO,oDAAoD,CAAC;AAC5D,OAAO,6DAA6D,CAAC;AACrE,OAAO,wDAAwD,CAAC;AAChE,OAAO,kDAAkD,CAAC;AAC1D,OAAO,sDAAsD,CAAC;AAE9D,IAAI,IAAI,GAAG,oBAAoB,CAAC;AAChC,IAAI,MAAM,GAAG,muDAsFZ,CAAC;AAEF,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,cAAc;AACd,MAAM,CAAC,IAAI,kBAAkB,GAAG,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC","sourcesContent":["import { ShaderStore } from \"@babylonjs/core/Engines/shaderStore\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/bonesDeclaration\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/bakedVertexAnimationDeclaration\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/instancesDeclaration\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/clipPlaneVertexDeclaration\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/fogVertexDeclaration\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/lightFragmentDeclaration\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/lightUboDeclaration\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/instancesVertex\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/bonesVertex\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/bakedVertexAnimation\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/clipPlaneVertex\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/fogVertex\";\nimport \"@babylonjs/core/Shaders/ShadersInclude/shadowsVertex\";\n\nlet name = 'simpleVertexShader';\nlet shader = `precision highp float;\n\nattribute vec3 position;\n#ifdef NORMAL\nattribute vec3 normal;\n#endif\n#ifdef UV1\nattribute vec2 uv;\n#endif\n#ifdef UV2\nattribute vec2 uv2;\n#endif\n#ifdef VERTEXCOLOR\nattribute vec4 color;\n#endif\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n\n#include<instancesDeclaration>\nuniform mat4 view;\nuniform mat4 viewProjection;\n#ifdef DIFFUSE\nvarying vec2 vDiffuseUV;\nuniform mat4 diffuseMatrix;\nuniform vec2 vDiffuseInfos;\n#endif\n#ifdef POINTSIZE\nuniform float pointSize;\n#endif\n\nvarying vec3 vPositionW;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR)\nvarying vec4 vColor;\n#endif\n#include<clipPlaneVertexDeclaration>\n#include<fogVertexDeclaration>\n#include<__decl__lightFragment>[0..maxSimultaneousLights]\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\nvec4 worldPos=finalWorld*vec4(position,1.0);\ngl_Position=viewProjection*worldPos;\nvPositionW=vec3(worldPos);\n#ifdef NORMAL\nvNormalW=normalize(vec3(finalWorld*vec4(normal,0.0)));\n#endif\n\n#ifndef UV1\nvec2 uv=vec2(0.,0.);\n#endif\n#ifndef UV2\nvec2 uv2=vec2(0.,0.);\n#endif\n#ifdef DIFFUSE\nif (vDiffuseInfos.x == 0.)\n{\nvDiffuseUV=vec2(diffuseMatrix*vec4(uv,1.0,0.0));\n}\nelse\n{\nvDiffuseUV=vec2(diffuseMatrix*vec4(uv2,1.0,0.0));\n}\n#endif\n\n#include<clipPlaneVertex>\n\n#include<fogVertex>\n#include<shadowsVertex>[0..maxSimultaneousLights]\n\n#ifdef VERTEXCOLOR\nvColor=color;\n#elif INSTANCESCOLOR\nvColor=instanceColor;\n#endif\n\n#if defined(POINTSIZE) && !defined(WEBGPU)\ngl_PointSize=pointSize;\n#endif\n#define CUSTOM_VERTEX_MAIN_END\n}\n`;\n\nShaderStore.ShadersStore[name] = shader;\n/** @hidden */\nexport var simpleVertexShader = { name, shader };\n"]}
|
@@ -18,7 +18,7 @@ export declare class SimpleMaterial extends PushMaterial {
|
|
18
18
|
disableLighting: boolean;
|
19
19
|
private _maxSimultaneousLights;
|
20
20
|
maxSimultaneousLights: number;
|
21
|
-
constructor(name: string, scene
|
21
|
+
constructor(name: string, scene?: Scene);
|
22
22
|
needAlphaBlending(): boolean;
|
23
23
|
needAlphaTesting(): boolean;
|
24
24
|
getAlphaTestTexture(): Nullable<BaseTexture>;
|
package/simple/simpleMaterial.js
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
import { __decorate, __extends } from "tslib";
|
2
|
-
import { serializeAsTexture, serialize, expandToProperty, serializeAsColor3, SerializationHelper } from "@babylonjs/core/Misc/decorators";
|
3
|
-
import { Color3 } from "@babylonjs/core/Maths/math.color";
|
4
|
-
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines";
|
5
|
-
import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper";
|
6
|
-
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial";
|
7
|
-
import { MaterialFlags } from "@babylonjs/core/Materials/materialFlags";
|
8
|
-
import { VertexBuffer } from "@babylonjs/core/
|
9
|
-
import { Scene } from "@babylonjs/core/scene";
|
10
|
-
import {
|
11
|
-
import "./simple.fragment";
|
12
|
-
import "./simple.vertex";
|
13
|
-
import { EffectFallbacks } from '@babylonjs/core/Materials/effectFallbacks';
|
2
|
+
import { serializeAsTexture, serialize, expandToProperty, serializeAsColor3, SerializationHelper } from "@babylonjs/core/Misc/decorators.js";
|
3
|
+
import { Color3 } from "@babylonjs/core/Maths/math.color.js";
|
4
|
+
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
|
5
|
+
import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper.js";
|
6
|
+
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
7
|
+
import { MaterialFlags } from "@babylonjs/core/Materials/materialFlags.js";
|
8
|
+
import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
9
|
+
import { Scene } from "@babylonjs/core/scene.js";
|
10
|
+
import { RegisterClass } from '@babylonjs/core/Misc/typeStore.js';
|
11
|
+
import "./simple.fragment.js";
|
12
|
+
import "./simple.vertex.js";
|
13
|
+
import { EffectFallbacks } from '@babylonjs/core/Materials/effectFallbacks.js';
|
14
14
|
var SimpleMaterialDefines = /** @class */ (function (_super) {
|
15
15
|
__extends(SimpleMaterialDefines, _super);
|
16
16
|
function SimpleMaterialDefines() {
|
@@ -34,7 +34,9 @@ var SimpleMaterialDefines = /** @class */ (function (_super) {
|
|
34
34
|
_this.NUM_BONE_INFLUENCERS = 0;
|
35
35
|
_this.BonesPerMesh = 0;
|
36
36
|
_this.INSTANCES = false;
|
37
|
+
_this.INSTANCESCOLOR = false;
|
37
38
|
_this.IMAGEPROCESSINGPOSTPROCESS = false;
|
39
|
+
_this.SKIPFINALCOLORCLAMP = false;
|
38
40
|
_this.rebuild();
|
39
41
|
return _this;
|
40
42
|
}
|
@@ -65,10 +67,10 @@ var SimpleMaterial = /** @class */ (function (_super) {
|
|
65
67
|
return true;
|
66
68
|
}
|
67
69
|
}
|
68
|
-
if (!subMesh.
|
69
|
-
subMesh.
|
70
|
+
if (!subMesh.materialDefines) {
|
71
|
+
subMesh.materialDefines = new SimpleMaterialDefines();
|
70
72
|
}
|
71
|
-
var defines = subMesh.
|
73
|
+
var defines = subMesh.materialDefines;
|
72
74
|
var scene = this.getScene();
|
73
75
|
if (this._isReadyForSubMesh(subMesh)) {
|
74
76
|
return true;
|
@@ -154,7 +156,7 @@ var SimpleMaterial = /** @class */ (function (_super) {
|
|
154
156
|
onCompiled: this.onCompiled,
|
155
157
|
onError: this.onError,
|
156
158
|
indexParameters: { maxSimultaneousLights: this._maxSimultaneousLights - 1 }
|
157
|
-
}, engine), defines);
|
159
|
+
}, engine), defines, this._materialContext);
|
158
160
|
}
|
159
161
|
if (!subMesh.effect || !subMesh.effect.isReady()) {
|
160
162
|
return false;
|
@@ -165,7 +167,7 @@ var SimpleMaterial = /** @class */ (function (_super) {
|
|
165
167
|
};
|
166
168
|
SimpleMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
|
167
169
|
var scene = this.getScene();
|
168
|
-
var defines = subMesh.
|
170
|
+
var defines = subMesh.materialDefines;
|
169
171
|
if (!defines) {
|
170
172
|
return;
|
171
173
|
}
|
@@ -192,7 +194,7 @@ var SimpleMaterial = /** @class */ (function (_super) {
|
|
192
194
|
if (this.pointsCloud) {
|
193
195
|
this._activeEffect.setFloat("pointSize", this.pointSize);
|
194
196
|
}
|
195
|
-
|
197
|
+
scene.bindEyePosition(effect);
|
196
198
|
}
|
197
199
|
this._activeEffect.setColor4("vDiffuseColor", this.diffuseColor, this.alpha * mesh.visibility);
|
198
200
|
// Lights
|
@@ -241,7 +243,7 @@ var SimpleMaterial = /** @class */ (function (_super) {
|
|
241
243
|
return SerializationHelper.Clone(function () { return new SimpleMaterial(name, _this.getScene()); }, this);
|
242
244
|
};
|
243
245
|
SimpleMaterial.prototype.serialize = function () {
|
244
|
-
var serializationObject =
|
246
|
+
var serializationObject = _super.prototype.serialize.call(this);
|
245
247
|
serializationObject.customType = "BABYLON.SimpleMaterial";
|
246
248
|
return serializationObject;
|
247
249
|
};
|
@@ -276,5 +278,5 @@ var SimpleMaterial = /** @class */ (function (_super) {
|
|
276
278
|
return SimpleMaterial;
|
277
279
|
}(PushMaterial));
|
278
280
|
export { SimpleMaterial };
|
279
|
-
|
281
|
+
RegisterClass("BABYLON.SimpleMaterial", SimpleMaterial);
|
280
282
|
//# sourceMappingURL=simpleMaterial.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"simpleMaterial.js","sourceRoot":"","sources":["../../../sourceES6/materialsLibrary/src/simple/simpleMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { serializeAsTexture, serialize, expandToProperty, serializeAsColor3, SerializationHelper } from \"@babylonjs/core/Misc/decorators\";\r\nimport { Matrix } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { Color3 } from \"@babylonjs/core/Maths/math.color\";\r\nimport { IAnimatable } from '@babylonjs/core/Animations/animatable.interface';\r\nimport { BaseTexture } from \"@babylonjs/core/Materials/Textures/baseTexture\";\r\nimport { IEffectCreationOptions } from \"@babylonjs/core/Materials/effect\";\r\nimport { MaterialDefines } from \"@babylonjs/core/Materials/materialDefines\";\r\nimport { MaterialHelper } from \"@babylonjs/core/Materials/materialHelper\";\r\nimport { PushMaterial } from \"@babylonjs/core/Materials/pushMaterial\";\r\nimport { MaterialFlags } from \"@babylonjs/core/Materials/materialFlags\";\r\nimport { VertexBuffer } from \"@babylonjs/core/Meshes/buffer\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { SubMesh } from \"@babylonjs/core/Meshes/subMesh\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\nimport { _TypeStore } from '@babylonjs/core/Misc/typeStore';\r\n\r\nimport \"./simple.fragment\";\r\nimport \"./simple.vertex\";\r\nimport { EffectFallbacks } from '@babylonjs/core/Materials/effectFallbacks';\r\n\r\nclass SimpleMaterialDefines extends MaterialDefines {\r\n public DIFFUSE = false;\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public ALPHATEST = false;\r\n public DEPTHPREPASS = false;\r\n public POINTSIZE = false;\r\n public FOG = false;\r\n public NORMAL = false;\r\n public UV1 = false;\r\n public UV2 = false;\r\n public VERTEXCOLOR = false;\r\n public VERTEXALPHA = false;\r\n public NUM_BONE_INFLUENCERS = 0;\r\n public BonesPerMesh = 0;\r\n public INSTANCES = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class SimpleMaterial extends PushMaterial {\r\n @serializeAsTexture(\"diffuseTexture\")\r\n private _diffuseTexture: BaseTexture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public diffuseTexture: BaseTexture;\r\n\r\n @serializeAsColor3(\"diffuse\")\r\n public diffuseColor = new Color3(1, 1, 1);\r\n\r\n @serialize(\"disableLighting\")\r\n private _disableLighting = false;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public disableLighting: boolean;\r\n\r\n @serialize(\"maxSimultaneousLights\")\r\n private _maxSimultaneousLights = 4;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public maxSimultaneousLights: number;\r\n\r\n constructor(name: string, scene: Scene) {\r\n super(name, scene);\r\n }\r\n\r\n public needAlphaBlending(): boolean {\r\n return (this.alpha < 1.0);\r\n }\r\n\r\n public needAlphaTesting(): boolean {\r\n return false;\r\n }\r\n\r\n public getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n // Methods\r\n public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n if (this.isFrozen) {\r\n if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh._materialDefines) {\r\n subMesh._materialDefines = new SimpleMaterialDefines();\r\n }\r\n\r\n var defines = <SimpleMaterialDefines>subMesh._materialDefines;\r\n var scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n var engine = scene.getEngine();\r\n\r\n // Textures\r\n if (defines._areTexturesDirty) {\r\n defines._needUVs = false;\r\n if (scene.texturesEnabled) {\r\n if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n if (!this._diffuseTexture.isReady()) {\r\n return false;\r\n } else {\r\n defines._needUVs = true;\r\n defines.DIFFUSE = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Misc.\r\n MaterialHelper.PrepareDefinesForMisc(mesh, scene, false, this.pointsCloud, this.fogEnabled, this._shouldTurnAlphaTestOn(mesh), defines);\r\n\r\n // Lights\r\n defines._needNormals = MaterialHelper.PrepareDefinesForLights(scene, mesh, defines, false, this._maxSimultaneousLights, this._disableLighting);\r\n\r\n // Values that need to be evaluated on every frame\r\n MaterialHelper.PrepareDefinesForFrameBoundValues(scene, engine, defines, useInstances ? true : false);\r\n\r\n // Attribs\r\n MaterialHelper.PrepareDefinesForAttributes(mesh, defines, true, true);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n var fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n MaterialHelper.HandleFallbacksForShadows(defines, fallbacks, this.maxSimultaneousLights);\r\n\r\n if (defines.NUM_BONE_INFLUENCERS > 0) {\r\n fallbacks.addCPUSkinningFallback(0, mesh);\r\n }\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n var attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n MaterialHelper.PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n MaterialHelper.PrepareAttributesForInstances(attribs, defines);\r\n\r\n var shaderName = \"simple\";\r\n var join = defines.toString();\r\n var uniforms = [\"world\", \"view\", \"viewProjection\", \"vEyePosition\", \"vLightsType\", \"vDiffuseColor\",\r\n \"vFogInfos\", \"vFogColor\", \"pointSize\",\r\n \"vDiffuseInfos\",\r\n \"mBones\",\r\n \"vClipPlane\", \"vClipPlane2\", \"vClipPlane3\", \"vClipPlane4\", \"vClipPlane5\", \"vClipPlane6\", \"diffuseMatrix\"\r\n ];\r\n var samplers = [\"diffuseSampler\"];\r\n var uniformBuffers = new Array<string>();\r\n\r\n MaterialHelper.PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: this.maxSimultaneousLights\r\n });\r\n subMesh.setEffect(scene.getEngine().createEffect(shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: this._maxSimultaneousLights - 1 }\r\n }, engine), defines);\r\n\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n subMesh.effect._wasPreviouslyReady = true;\r\n\r\n return true;\r\n }\r\n\r\n public bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n var scene = this.getScene();\r\n\r\n var defines = <SimpleMaterialDefines>subMesh._materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n var effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n\r\n // Bones\r\n MaterialHelper.BindBonesParameters(mesh, this._activeEffect);\r\n\r\n if (this._mustRebind(scene, effect)) {\r\n // Textures\r\n if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n this._activeEffect.setTexture(\"diffuseSampler\", this._diffuseTexture);\r\n\r\n this._activeEffect.setFloat2(\"vDiffuseInfos\", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);\r\n this._activeEffect.setMatrix(\"diffuseMatrix\", this._diffuseTexture.getTextureMatrix());\r\n }\r\n\r\n // Clip plane\r\n MaterialHelper.BindClipPlane(this._activeEffect, scene);\r\n\r\n // Point size\r\n if (this.pointsCloud) {\r\n this._activeEffect.setFloat(\"pointSize\", this.pointSize);\r\n }\r\n\r\n MaterialHelper.BindEyePosition(effect, scene);\r\n }\r\n\r\n this._activeEffect.setColor4(\"vDiffuseColor\", this.diffuseColor, this.alpha * mesh.visibility);\r\n\r\n // Lights\r\n if (scene.lightsEnabled && !this.disableLighting) {\r\n MaterialHelper.BindLights(scene, mesh, this._activeEffect, defines, this.maxSimultaneousLights);\r\n }\r\n\r\n // View\r\n if (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) {\r\n this._activeEffect.setMatrix(\"view\", scene.getViewMatrix());\r\n }\r\n\r\n // Fog\r\n MaterialHelper.BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._afterBind(mesh, this._activeEffect);\r\n }\r\n\r\n public getAnimatables(): IAnimatable[] {\r\n var results = [];\r\n\r\n if (this._diffuseTexture && this._diffuseTexture.animations && this._diffuseTexture.animations.length > 0) {\r\n results.push(this._diffuseTexture);\r\n }\r\n\r\n return results;\r\n }\r\n\r\n public getActiveTextures(): BaseTexture[] {\r\n var activeTextures = super.getActiveTextures();\r\n\r\n if (this._diffuseTexture) {\r\n activeTextures.push(this._diffuseTexture);\r\n }\r\n\r\n return activeTextures;\r\n }\r\n\r\n public hasTexture(texture: BaseTexture): boolean {\r\n if (super.hasTexture(texture)) {\r\n return true;\r\n }\r\n\r\n if (this.diffuseTexture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public dispose(forceDisposeEffect?: boolean): void {\r\n if (this._diffuseTexture) {\r\n this._diffuseTexture.dispose();\r\n }\r\n\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public clone(name: string): SimpleMaterial {\r\n return SerializationHelper.Clone<SimpleMaterial>(() => new SimpleMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public serialize(): any {\r\n var serializationObject = SerializationHelper.Serialize(this);\r\n serializationObject.customType = \"BABYLON.SimpleMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public getClassName(): string {\r\n return \"SimpleMaterial\";\r\n }\r\n\r\n // Statics\r\n public static Parse(source: any, scene: Scene, rootUrl: string): SimpleMaterial {\r\n return SerializationHelper.Parse(() => new SimpleMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\n_TypeStore.RegisteredTypes[\"BABYLON.SimpleMaterial\"] = SimpleMaterial;"]}
|
1
|
+
{"version":3,"file":"simpleMaterial.js","sourceRoot":"","sources":["../../../sourceES6/materialsLibrary/src/simple/simpleMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { serializeAsTexture, serialize, expandToProperty, serializeAsColor3, SerializationHelper } from \"@babylonjs/core/Misc/decorators\";\r\nimport { Matrix } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { Color3 } from \"@babylonjs/core/Maths/math.color\";\r\nimport { IAnimatable } from '@babylonjs/core/Animations/animatable.interface';\r\nimport { BaseTexture } from \"@babylonjs/core/Materials/Textures/baseTexture\";\r\nimport { IEffectCreationOptions } from \"@babylonjs/core/Materials/effect\";\r\nimport { MaterialDefines } from \"@babylonjs/core/Materials/materialDefines\";\r\nimport { MaterialHelper } from \"@babylonjs/core/Materials/materialHelper\";\r\nimport { PushMaterial } from \"@babylonjs/core/Materials/pushMaterial\";\r\nimport { MaterialFlags } from \"@babylonjs/core/Materials/materialFlags\";\r\nimport { VertexBuffer } from \"@babylonjs/core/Buffers/buffer\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { SubMesh } from \"@babylonjs/core/Meshes/subMesh\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\nimport { RegisterClass } from '@babylonjs/core/Misc/typeStore';\r\n\r\nimport \"./simple.fragment\";\r\nimport \"./simple.vertex\";\r\nimport { EffectFallbacks } from '@babylonjs/core/Materials/effectFallbacks';\r\n\r\nclass SimpleMaterialDefines extends MaterialDefines {\r\n public DIFFUSE = false;\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public ALPHATEST = false;\r\n public DEPTHPREPASS = false;\r\n public POINTSIZE = false;\r\n public FOG = false;\r\n public NORMAL = false;\r\n public UV1 = false;\r\n public UV2 = false;\r\n public VERTEXCOLOR = false;\r\n public VERTEXALPHA = false;\r\n public NUM_BONE_INFLUENCERS = 0;\r\n public BonesPerMesh = 0;\r\n public INSTANCES = false;\r\n public INSTANCESCOLOR = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n public SKIPFINALCOLORCLAMP = false;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class SimpleMaterial extends PushMaterial {\r\n @serializeAsTexture(\"diffuseTexture\")\r\n private _diffuseTexture: BaseTexture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public diffuseTexture: BaseTexture;\r\n\r\n @serializeAsColor3(\"diffuse\")\r\n public diffuseColor = new Color3(1, 1, 1);\r\n\r\n @serialize(\"disableLighting\")\r\n private _disableLighting = false;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public disableLighting: boolean;\r\n\r\n @serialize(\"maxSimultaneousLights\")\r\n private _maxSimultaneousLights = 4;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public maxSimultaneousLights: number;\r\n\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n }\r\n\r\n public needAlphaBlending(): boolean {\r\n return (this.alpha < 1.0);\r\n }\r\n\r\n public needAlphaTesting(): boolean {\r\n return false;\r\n }\r\n\r\n public getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n // Methods\r\n public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n if (this.isFrozen) {\r\n if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new SimpleMaterialDefines();\r\n }\r\n\r\n var defines = <SimpleMaterialDefines>subMesh.materialDefines;\r\n var scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n var engine = scene.getEngine();\r\n\r\n // Textures\r\n if (defines._areTexturesDirty) {\r\n defines._needUVs = false;\r\n if (scene.texturesEnabled) {\r\n if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n if (!this._diffuseTexture.isReady()) {\r\n return false;\r\n } else {\r\n defines._needUVs = true;\r\n defines.DIFFUSE = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Misc.\r\n MaterialHelper.PrepareDefinesForMisc(mesh, scene, false, this.pointsCloud, this.fogEnabled, this._shouldTurnAlphaTestOn(mesh), defines);\r\n\r\n // Lights\r\n defines._needNormals = MaterialHelper.PrepareDefinesForLights(scene, mesh, defines, false, this._maxSimultaneousLights, this._disableLighting);\r\n\r\n // Values that need to be evaluated on every frame\r\n MaterialHelper.PrepareDefinesForFrameBoundValues(scene, engine, defines, useInstances ? true : false);\r\n\r\n // Attribs\r\n MaterialHelper.PrepareDefinesForAttributes(mesh, defines, true, true);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n var fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n MaterialHelper.HandleFallbacksForShadows(defines, fallbacks, this.maxSimultaneousLights);\r\n\r\n if (defines.NUM_BONE_INFLUENCERS > 0) {\r\n fallbacks.addCPUSkinningFallback(0, mesh);\r\n }\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n var attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n MaterialHelper.PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n MaterialHelper.PrepareAttributesForInstances(attribs, defines);\r\n\r\n var shaderName = \"simple\";\r\n var join = defines.toString();\r\n var uniforms = [\"world\", \"view\", \"viewProjection\", \"vEyePosition\", \"vLightsType\", \"vDiffuseColor\",\r\n \"vFogInfos\", \"vFogColor\", \"pointSize\",\r\n \"vDiffuseInfos\",\r\n \"mBones\",\r\n \"vClipPlane\", \"vClipPlane2\", \"vClipPlane3\", \"vClipPlane4\", \"vClipPlane5\", \"vClipPlane6\", \"diffuseMatrix\"\r\n ];\r\n var samplers = [\"diffuseSampler\"];\r\n var uniformBuffers = new Array<string>();\r\n\r\n MaterialHelper.PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: this.maxSimultaneousLights\r\n });\r\n subMesh.setEffect(scene.getEngine().createEffect(shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: this._maxSimultaneousLights - 1 }\r\n }, engine), defines, this._materialContext);\r\n\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n subMesh.effect._wasPreviouslyReady = true;\r\n\r\n return true;\r\n }\r\n\r\n public bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n var scene = this.getScene();\r\n\r\n var defines = <SimpleMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n var effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n\r\n // Bones\r\n MaterialHelper.BindBonesParameters(mesh, this._activeEffect);\r\n\r\n if (this._mustRebind(scene, effect)) {\r\n // Textures\r\n if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n this._activeEffect.setTexture(\"diffuseSampler\", this._diffuseTexture);\r\n\r\n this._activeEffect.setFloat2(\"vDiffuseInfos\", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);\r\n this._activeEffect.setMatrix(\"diffuseMatrix\", this._diffuseTexture.getTextureMatrix());\r\n }\r\n\r\n // Clip plane\r\n MaterialHelper.BindClipPlane(this._activeEffect, scene);\r\n\r\n // Point size\r\n if (this.pointsCloud) {\r\n this._activeEffect.setFloat(\"pointSize\", this.pointSize);\r\n }\r\n\r\n scene.bindEyePosition(effect);\r\n }\r\n\r\n this._activeEffect.setColor4(\"vDiffuseColor\", this.diffuseColor, this.alpha * mesh.visibility);\r\n\r\n // Lights\r\n if (scene.lightsEnabled && !this.disableLighting) {\r\n MaterialHelper.BindLights(scene, mesh, this._activeEffect, defines, this.maxSimultaneousLights);\r\n }\r\n\r\n // View\r\n if (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) {\r\n this._activeEffect.setMatrix(\"view\", scene.getViewMatrix());\r\n }\r\n\r\n // Fog\r\n MaterialHelper.BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._afterBind(mesh, this._activeEffect);\r\n }\r\n\r\n public getAnimatables(): IAnimatable[] {\r\n var results = [];\r\n\r\n if (this._diffuseTexture && this._diffuseTexture.animations && this._diffuseTexture.animations.length > 0) {\r\n results.push(this._diffuseTexture);\r\n }\r\n\r\n return results;\r\n }\r\n\r\n public getActiveTextures(): BaseTexture[] {\r\n var activeTextures = super.getActiveTextures();\r\n\r\n if (this._diffuseTexture) {\r\n activeTextures.push(this._diffuseTexture);\r\n }\r\n\r\n return activeTextures;\r\n }\r\n\r\n public hasTexture(texture: BaseTexture): boolean {\r\n if (super.hasTexture(texture)) {\r\n return true;\r\n }\r\n\r\n if (this.diffuseTexture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public dispose(forceDisposeEffect?: boolean): void {\r\n if (this._diffuseTexture) {\r\n this._diffuseTexture.dispose();\r\n }\r\n\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public clone(name: string): SimpleMaterial {\r\n return SerializationHelper.Clone<SimpleMaterial>(() => new SimpleMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public serialize(): any {\r\n var serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.SimpleMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public getClassName(): string {\r\n return \"SimpleMaterial\";\r\n }\r\n\r\n // Statics\r\n public static Parse(source: any, scene: Scene, rootUrl: string): SimpleMaterial {\r\n return SerializationHelper.Parse(() => new SimpleMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.SimpleMaterial\", SimpleMaterial);"]}
|
package/sky/index.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export * from "./skyMaterial";
|
1
|
+
export * from "./skyMaterial.js";
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/sky/sky.fragment.js
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
import {
|
2
|
-
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration";
|
3
|
-
import "@babylonjs/core/Shaders/ShadersInclude/fogFragmentDeclaration";
|
4
|
-
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragment";
|
5
|
-
import "@babylonjs/core/Shaders/ShadersInclude/fogFragment";
|
6
|
-
import "@babylonjs/core/Shaders/ShadersInclude/imageProcessingCompatibility";
|
1
|
+
import { ShaderStore } from "@babylonjs/core/Engines/shaderStore.js";
|
2
|
+
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js";
|
3
|
+
import "@babylonjs/core/Shaders/ShadersInclude/fogFragmentDeclaration.js";
|
4
|
+
import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragment.js";
|
5
|
+
import "@babylonjs/core/Shaders/ShadersInclude/fogFragment.js";
|
6
|
+
import "@babylonjs/core/Shaders/ShadersInclude/imageProcessingCompatibility.js";
|
7
7
|
var name = 'skyPixelShader';
|
8
|
-
var shader = "precision highp float;\n\nvarying vec3 vPositionW;\n#ifdef VERTEXCOLOR\nvarying vec4 vColor;\n#endif\n#include<clipPlaneFragmentDeclaration>\n\nuniform vec3 cameraPosition;\nuniform vec3 cameraOffset;\nuniform vec3 up;\nuniform float luminance;\nuniform float turbidity;\nuniform float rayleigh;\nuniform float mieCoefficient;\nuniform float mieDirectionalG;\nuniform vec3 sunPosition;\n\n#include<fogFragmentDeclaration>\n\nconst float e=2.71828182845904523536028747135266249775724709369995957;\nconst float pi=3.141592653589793238462643383279502884197169;\nconst float n=1.0003;\nconst float N=2.545E25;\nconst float pn=0.035;\nconst vec3 lambda=vec3(680E-9,550E-9,450E-9);\nconst vec3 K=vec3(0.686,0.678,0.666);\nconst float v=4.0;\nconst float rayleighZenithLength=8.4E3;\nconst float mieZenithLength=1.25E3;\nconst float EE=1000.0;\nconst float sunAngularDiameterCos=0.999956676946448443553574619906976478926848692873900859324;\nconst float cutoffAngle=pi/1.95;\nconst float steepness=1.5;\nvec3 totalRayleigh(vec3 lambda)\n{\nreturn (8.0*pow(pi,3.0)*pow(pow(n,2.0)-1.0,2.0)*(6.0+3.0*pn))/(3.0*N*pow(lambda,vec3(4.0))*(6.0-7.0*pn));\n}\nvec3 simplifiedRayleigh()\n{\nreturn 0.0005/vec3(94,40,18);\n}\nfloat rayleighPhase(float cosTheta)\n{\nreturn (3.0/(16.0*pi))*(1.0+pow(cosTheta,2.0));\n}\nvec3 totalMie(vec3 lambda,vec3 K,float T)\n{\nfloat c=(0.2*T )*10E-18;\nreturn 0.434*c*pi*pow((2.0*pi)/lambda,vec3(v-2.0))*K;\n}\nfloat hgPhase(float cosTheta,float g)\n{\nreturn (1.0/(4.0*pi))*((1.0-pow(g,2.0))/pow(1.0-2.0*g*cosTheta+pow(g,2.0),1.5));\n}\nfloat sunIntensity(float zenithAngleCos)\n{\nreturn EE*max(0.0,1.0-exp((-(cutoffAngle-acos(zenithAngleCos))/steepness)));\n}\nfloat A=0.15;\nfloat B=0.50;\nfloat C=0.10;\nfloat D=0.20;\nfloat EEE=0.02;\nfloat F=0.30;\nfloat W=1000.0;\nvec3 Uncharted2Tonemap(vec3 x)\n{\nreturn ((x*(A*x+C*B)+D*EEE)/(x*(A*x+B)+D*F))-EEE/F;\n}\nvoid main(void) {\n\n#include<clipPlaneFragment>\n\nfloat sunfade=1.0-clamp(1.0-exp((sunPosition.y/450000.0)),0.0,1.0);\nfloat rayleighCoefficient=rayleigh-(1.0*(1.0-sunfade));\nvec3 sunDirection=normalize(sunPosition);\nfloat sunE=sunIntensity(dot(sunDirection,up));\nvec3 betaR=simplifiedRayleigh()*rayleighCoefficient;\nvec3 betaM=totalMie(lambda,K,turbidity)*mieCoefficient;\nfloat zenithAngle=acos(max(0.0,dot(up,normalize(vPositionW-cameraPosition+cameraOffset))));\nfloat sR=rayleighZenithLength/(cos(zenithAngle)+0.15*pow(93.885-((zenithAngle*180.0)/pi),-1.253));\nfloat sM=mieZenithLength/(cos(zenithAngle)+0.15*pow(93.885-((zenithAngle*180.0)/pi),-1.253));\nvec3 Fex=exp(-(betaR*sR+betaM*sM));\nfloat cosTheta=dot(normalize(vPositionW-cameraPosition),sunDirection);\nfloat rPhase=rayleighPhase(cosTheta*0.5+0.5);\nvec3 betaRTheta=betaR*rPhase;\nfloat mPhase=hgPhase(cosTheta,mieDirectionalG);\nvec3 betaMTheta=betaM*mPhase;\nvec3 Lin=pow(sunE*((betaRTheta+betaMTheta)/(betaR+betaM))*(1.0-Fex),vec3(1.5));\nLin*=mix(vec3(1.0),pow(sunE*((betaRTheta+betaMTheta)/(betaR+betaM))*Fex,vec3(1.0/2.0)),clamp(pow(1.0-dot(up,sunDirection),5.0),0.0,1.0));\nvec3 direction=normalize(vPositionW-cameraPosition);\nfloat theta=acos(direction.y);\nfloat phi=atan(direction.z,direction.x);\nvec2 uv=vec2(phi,theta)/vec2(2.0*pi,pi)+vec2(0.5,0.0);\nvec3 L0=vec3(0.1)*Fex;\nfloat sundisk=smoothstep(sunAngularDiameterCos,sunAngularDiameterCos+0.00002,cosTheta);\nL0+=(sunE*19000.0*Fex)*sundisk;\nvec3 whiteScale=1.0/Uncharted2Tonemap(vec3(W));\nvec3 texColor=(Lin+L0);\ntexColor*=0.04 ;\ntexColor+=vec3(0.0,0.001,0.0025)*0.3;\nfloat g_fMaxLuminance=1.0;\nfloat fLumScaled=0.1/luminance;\nfloat fLumCompressed=(fLumScaled*(1.0+(fLumScaled/(g_fMaxLuminance*g_fMaxLuminance))))/(1.0+fLumScaled);\nfloat ExposureBias=fLumCompressed;\nvec3 curr=Uncharted2Tonemap((log2(2.0/pow(luminance,4.0)))*texColor);\n\n\n\nvec3 retColor=curr*whiteScale;\n\n\nfloat alpha=1.0;\n#ifdef VERTEXCOLOR\nretColor.rgb*=vColor.rgb;\n#endif\n#ifdef VERTEXALPHA\nalpha*=vColor.a;\n#endif\n\nvec4 color=clamp(vec4(retColor.rgb,alpha),0.0,1.0);\n\n#include<fogFragment>\ngl_FragColor=color;\n#include<imageProcessingCompatibility>\n}\n";
|
9
|
-
|
8
|
+
var shader = "precision highp float;\n\nvarying vec3 vPositionW;\n#ifdef VERTEXCOLOR\nvarying vec4 vColor;\n#endif\n#include<clipPlaneFragmentDeclaration>\n\nuniform vec3 cameraPosition;\nuniform vec3 cameraOffset;\nuniform vec3 up;\nuniform float luminance;\nuniform float turbidity;\nuniform float rayleigh;\nuniform float mieCoefficient;\nuniform float mieDirectionalG;\nuniform vec3 sunPosition;\n\n#include<fogFragmentDeclaration>\n\nconst float e=2.71828182845904523536028747135266249775724709369995957;\nconst float pi=3.141592653589793238462643383279502884197169;\nconst float n=1.0003;\nconst float N=2.545E25;\nconst float pn=0.035;\nconst vec3 lambda=vec3(680E-9,550E-9,450E-9);\nconst vec3 K=vec3(0.686,0.678,0.666);\nconst float v=4.0;\nconst float rayleighZenithLength=8.4E3;\nconst float mieZenithLength=1.25E3;\nconst float EE=1000.0;\nconst float sunAngularDiameterCos=0.999956676946448443553574619906976478926848692873900859324;\nconst float cutoffAngle=pi/1.95;\nconst float steepness=1.5;\nvec3 totalRayleigh(vec3 lambda)\n{\nreturn (8.0*pow(pi,3.0)*pow(pow(n,2.0)-1.0,2.0)*(6.0+3.0*pn))/(3.0*N*pow(lambda,vec3(4.0))*(6.0-7.0*pn));\n}\nvec3 simplifiedRayleigh()\n{\nreturn 0.0005/vec3(94,40,18);\n}\nfloat rayleighPhase(float cosTheta)\n{\nreturn (3.0/(16.0*pi))*(1.0+pow(cosTheta,2.0));\n}\nvec3 totalMie(vec3 lambda,vec3 K,float T)\n{\nfloat c=(0.2*T )*10E-18;\nreturn 0.434*c*pi*pow((2.0*pi)/lambda,vec3(v-2.0))*K;\n}\nfloat hgPhase(float cosTheta,float g)\n{\nreturn (1.0/(4.0*pi))*((1.0-pow(g,2.0))/pow(1.0-2.0*g*cosTheta+pow(g,2.0),1.5));\n}\nfloat sunIntensity(float zenithAngleCos)\n{\nreturn EE*max(0.0,1.0-exp((-(cutoffAngle-acos(zenithAngleCos))/steepness)));\n}\nfloat A=0.15;\nfloat B=0.50;\nfloat C=0.10;\nfloat D=0.20;\nfloat EEE=0.02;\nfloat F=0.30;\nfloat W=1000.0;\nvec3 Uncharted2Tonemap(vec3 x)\n{\nreturn ((x*(A*x+C*B)+D*EEE)/(x*(A*x+B)+D*F))-EEE/F;\n}\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n\n#include<clipPlaneFragment>\n\nfloat sunfade=1.0-clamp(1.0-exp((sunPosition.y/450000.0)),0.0,1.0);\nfloat rayleighCoefficient=rayleigh-(1.0*(1.0-sunfade));\nvec3 sunDirection=normalize(sunPosition);\nfloat sunE=sunIntensity(dot(sunDirection,up));\nvec3 betaR=simplifiedRayleigh()*rayleighCoefficient;\nvec3 betaM=totalMie(lambda,K,turbidity)*mieCoefficient;\nfloat zenithAngle=acos(max(0.0,dot(up,normalize(vPositionW-cameraPosition+cameraOffset))));\nfloat sR=rayleighZenithLength/(cos(zenithAngle)+0.15*pow(93.885-((zenithAngle*180.0)/pi),-1.253));\nfloat sM=mieZenithLength/(cos(zenithAngle)+0.15*pow(93.885-((zenithAngle*180.0)/pi),-1.253));\nvec3 Fex=exp(-(betaR*sR+betaM*sM));\nfloat cosTheta=dot(normalize(vPositionW-cameraPosition),sunDirection);\nfloat rPhase=rayleighPhase(cosTheta*0.5+0.5);\nvec3 betaRTheta=betaR*rPhase;\nfloat mPhase=hgPhase(cosTheta,mieDirectionalG);\nvec3 betaMTheta=betaM*mPhase;\nvec3 Lin=pow(sunE*((betaRTheta+betaMTheta)/(betaR+betaM))*(1.0-Fex),vec3(1.5));\nLin*=mix(vec3(1.0),pow(sunE*((betaRTheta+betaMTheta)/(betaR+betaM))*Fex,vec3(1.0/2.0)),clamp(pow(1.0-dot(up,sunDirection),5.0),0.0,1.0));\nvec3 direction=normalize(vPositionW-cameraPosition);\nfloat theta=acos(direction.y);\nfloat phi=atan(direction.z,direction.x);\nvec2 uv=vec2(phi,theta)/vec2(2.0*pi,pi)+vec2(0.5,0.0);\nvec3 L0=vec3(0.1)*Fex;\nfloat sundisk=smoothstep(sunAngularDiameterCos,sunAngularDiameterCos+0.00002,cosTheta);\nL0+=(sunE*19000.0*Fex)*sundisk;\nvec3 whiteScale=1.0/Uncharted2Tonemap(vec3(W));\nvec3 texColor=(Lin+L0);\ntexColor*=0.04 ;\ntexColor+=vec3(0.0,0.001,0.0025)*0.3;\nfloat g_fMaxLuminance=1.0;\nfloat fLumScaled=0.1/luminance;\nfloat fLumCompressed=(fLumScaled*(1.0+(fLumScaled/(g_fMaxLuminance*g_fMaxLuminance))))/(1.0+fLumScaled);\nfloat ExposureBias=fLumCompressed;\nvec3 curr=Uncharted2Tonemap((log2(2.0/pow(luminance,4.0)))*texColor);\n\n\n\nvec3 retColor=curr*whiteScale;\n\n\nfloat alpha=1.0;\n#ifdef VERTEXCOLOR\nretColor.rgb*=vColor.rgb;\n#endif\n#ifdef VERTEXALPHA\nalpha*=vColor.a;\n#endif\n\nvec4 color=clamp(vec4(retColor.rgb,alpha),0.0,1.0);\n\n#include<fogFragment>\ngl_FragColor=color;\n#include<imageProcessingCompatibility>\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n";
|
9
|
+
ShaderStore.ShadersStore[name] = shader;
|
10
10
|
/** @hidden */
|
11
11
|
export var skyPixelShader = { name: name, shader: shader };
|
12
12
|
//# sourceMappingURL=sky.fragment.js.map
|