@onerjs/materials 8.23.1
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.d.ts +19 -0
- package/cell/cell.fragment.js +100 -0
- package/cell/cell.fragment.js.map +1 -0
- package/cell/cell.vertex.d.ts +21 -0
- package/cell/cell.vertex.js +96 -0
- package/cell/cell.vertex.js.map +1 -0
- package/cell/cellMaterial.d.ts +37 -0
- package/cell/cellMaterial.js +312 -0
- package/cell/cellMaterial.js.map +1 -0
- package/cell/index.d.ts +1 -0
- package/cell/index.js +2 -0
- package/cell/index.js.map +1 -0
- package/custom/customMaterial.d.ts +280 -0
- package/custom/customMaterial.js +355 -0
- package/custom/customMaterial.js.map +1 -0
- package/custom/index.d.ts +2 -0
- package/custom/index.js +3 -0
- package/custom/index.js.map +1 -0
- package/custom/pbrCustomMaterial.d.ts +299 -0
- package/custom/pbrCustomMaterial.js +397 -0
- package/custom/pbrCustomMaterial.js.map +1 -0
- package/fire/fire.fragment.d.ts +13 -0
- package/fire/fire.fragment.js +65 -0
- package/fire/fire.fragment.js.map +1 -0
- package/fire/fire.vertex.d.ts +18 -0
- package/fire/fire.vertex.js +80 -0
- package/fire/fire.vertex.js.map +1 -0
- package/fire/fireMaterial.d.ts +38 -0
- package/fire/fireMaterial.js +342 -0
- package/fire/fireMaterial.js.map +1 -0
- package/fire/index.d.ts +1 -0
- package/fire/index.js +2 -0
- package/fire/index.js.map +1 -0
- package/fur/fur.fragment.d.ts +19 -0
- package/fur/fur.fragment.js +94 -0
- package/fur/fur.fragment.js.map +1 -0
- package/fur/fur.vertex.d.ts +21 -0
- package/fur/fur.vertex.js +126 -0
- package/fur/fur.vertex.js.map +1 -0
- package/fur/furMaterial.d.ts +57 -0
- package/fur/furMaterial.js +505 -0
- package/fur/furMaterial.js.map +1 -0
- package/fur/index.d.ts +1 -0
- package/fur/index.js +2 -0
- package/fur/index.js.map +1 -0
- package/gradient/gradient.fragment.d.ts +19 -0
- package/gradient/gradient.fragment.js +80 -0
- package/gradient/gradient.fragment.js.map +1 -0
- package/gradient/gradient.vertex.d.ts +21 -0
- package/gradient/gradient.vertex.js +87 -0
- package/gradient/gradient.vertex.js.map +1 -0
- package/gradient/gradientMaterial.d.ts +37 -0
- package/gradient/gradientMaterial.js +283 -0
- package/gradient/gradientMaterial.js.map +1 -0
- package/gradient/index.d.ts +1 -0
- package/gradient/index.js +2 -0
- package/gradient/index.js.map +1 -0
- package/grid/grid.fragment.d.ts +12 -0
- package/grid/grid.fragment.js +79 -0
- package/grid/grid.fragment.js.map +1 -0
- package/grid/grid.vertex.d.ts +15 -0
- package/grid/grid.vertex.js +60 -0
- package/grid/grid.vertex.js.map +1 -0
- package/grid/gridMaterial.d.ts +85 -0
- package/grid/gridMaterial.js +308 -0
- package/grid/gridMaterial.js.map +1 -0
- package/grid/index.d.ts +1 -0
- package/grid/index.js +2 -0
- package/grid/index.js.map +1 -0
- package/index.d.ts +15 -0
- package/index.js +17 -0
- package/index.js.map +1 -0
- package/lava/index.d.ts +1 -0
- package/lava/index.js +2 -0
- package/lava/index.js.map +1 -0
- package/lava/lava.fragment.d.ts +19 -0
- package/lava/lava.fragment.js +89 -0
- package/lava/lava.fragment.js.map +1 -0
- package/lava/lava.vertex.d.ts +21 -0
- package/lava/lava.vertex.js +113 -0
- package/lava/lava.vertex.js.map +1 -0
- package/lava/lavaMaterial.d.ts +45 -0
- package/lava/lavaMaterial.js +402 -0
- package/lava/lavaMaterial.js.map +1 -0
- package/legacy/legacy-cell.d.ts +1 -0
- package/legacy/legacy-cell.js +14 -0
- package/legacy/legacy-cell.js.map +1 -0
- package/legacy/legacy-custom.d.ts +1 -0
- package/legacy/legacy-custom.js +14 -0
- package/legacy/legacy-custom.js.map +1 -0
- package/legacy/legacy-fire.d.ts +1 -0
- package/legacy/legacy-fire.js +14 -0
- package/legacy/legacy-fire.js.map +1 -0
- package/legacy/legacy-fur.d.ts +1 -0
- package/legacy/legacy-fur.js +14 -0
- package/legacy/legacy-fur.js.map +1 -0
- package/legacy/legacy-gradient.d.ts +1 -0
- package/legacy/legacy-gradient.js +14 -0
- package/legacy/legacy-gradient.js.map +1 -0
- package/legacy/legacy-grid.d.ts +1 -0
- package/legacy/legacy-grid.js +14 -0
- package/legacy/legacy-grid.js.map +1 -0
- package/legacy/legacy-lava.d.ts +1 -0
- package/legacy/legacy-lava.js +14 -0
- package/legacy/legacy-lava.js.map +1 -0
- package/legacy/legacy-mix.d.ts +1 -0
- package/legacy/legacy-mix.js +14 -0
- package/legacy/legacy-mix.js.map +1 -0
- package/legacy/legacy-normal.d.ts +1 -0
- package/legacy/legacy-normal.js +14 -0
- package/legacy/legacy-normal.js.map +1 -0
- package/legacy/legacy-shadowOnly.d.ts +1 -0
- package/legacy/legacy-shadowOnly.js +14 -0
- package/legacy/legacy-shadowOnly.js.map +1 -0
- package/legacy/legacy-simple.d.ts +1 -0
- package/legacy/legacy-simple.js +14 -0
- package/legacy/legacy-simple.js.map +1 -0
- package/legacy/legacy-sky.d.ts +1 -0
- package/legacy/legacy-sky.js +14 -0
- package/legacy/legacy-sky.js.map +1 -0
- package/legacy/legacy-terrain.d.ts +1 -0
- package/legacy/legacy-terrain.js +14 -0
- package/legacy/legacy-terrain.js.map +1 -0
- package/legacy/legacy-triPlanar.d.ts +1 -0
- package/legacy/legacy-triPlanar.js +14 -0
- package/legacy/legacy-triPlanar.js.map +1 -0
- package/legacy/legacy-water.d.ts +1 -0
- package/legacy/legacy-water.js +14 -0
- package/legacy/legacy-water.js.map +1 -0
- package/legacy/legacy.d.ts +1 -0
- package/legacy/legacy.js +17 -0
- package/legacy/legacy.js.map +1 -0
- package/license.md +71 -0
- package/mix/index.d.ts +1 -0
- package/mix/index.js +2 -0
- package/mix/index.js.map +1 -0
- package/mix/mix.fragment.d.ts +19 -0
- package/mix/mix.fragment.js +106 -0
- package/mix/mix.fragment.js.map +1 -0
- package/mix/mix.vertex.d.ts +21 -0
- package/mix/mix.vertex.js +96 -0
- package/mix/mix.vertex.js.map +1 -0
- package/mix/mixMaterial.d.ts +65 -0
- package/mix/mixMaterial.js +508 -0
- package/mix/mixMaterial.js.map +1 -0
- package/normal/index.d.ts +1 -0
- package/normal/index.js +2 -0
- package/normal/index.js.map +1 -0
- package/normal/normal.fragment.d.ts +19 -0
- package/normal/normal.fragment.js +85 -0
- package/normal/normal.fragment.js.map +1 -0
- package/normal/normal.vertex.d.ts +20 -0
- package/normal/normal.vertex.js +88 -0
- package/normal/normal.vertex.js.map +1 -0
- package/normal/normalMaterial.d.ts +36 -0
- package/normal/normalMaterial.js +345 -0
- package/normal/normalMaterial.js.map +1 -0
- package/package.json +47 -0
- package/readme.md +30 -0
- package/shadowOnly/index.d.ts +1 -0
- package/shadowOnly/index.js +2 -0
- package/shadowOnly/index.js.map +1 -0
- package/shadowOnly/shadowOnly.fragment.d.ts +20 -0
- package/shadowOnly/shadowOnly.fragment.js +60 -0
- package/shadowOnly/shadowOnly.fragment.js.map +1 -0
- package/shadowOnly/shadowOnly.vertex.d.ts +22 -0
- package/shadowOnly/shadowOnly.vertex.js +69 -0
- package/shadowOnly/shadowOnly.vertex.js.map +1 -0
- package/shadowOnly/shadowOnlyMaterial.d.ts +30 -0
- package/shadowOnly/shadowOnlyMaterial.js +243 -0
- package/shadowOnly/shadowOnlyMaterial.js.map +1 -0
- package/simple/index.d.ts +1 -0
- package/simple/index.js +2 -0
- package/simple/index.js.map +1 -0
- package/simple/simple.fragment.d.ts +19 -0
- package/simple/simple.fragment.js +81 -0
- package/simple/simple.fragment.js.map +1 -0
- package/simple/simple.vertex.d.ts +21 -0
- package/simple/simple.vertex.js +96 -0
- package/simple/simple.vertex.js.map +1 -0
- package/simple/simpleMaterial.d.ts +35 -0
- package/simple/simpleMaterial.js +303 -0
- package/simple/simpleMaterial.js.map +1 -0
- package/sky/index.d.ts +1 -0
- package/sky/index.js +2 -0
- package/sky/index.js.map +1 -0
- package/sky/sky.fragment.d.ts +13 -0
- package/sky/sky.fragment.js +81 -0
- package/sky/sky.fragment.js.map +1 -0
- package/sky/sky.vertex.d.ts +11 -0
- package/sky/sky.vertex.js +47 -0
- package/sky/sky.vertex.js.map +1 -0
- package/sky/skyMaterial.d.ts +151 -0
- package/sky/skyMaterial.js +367 -0
- package/sky/skyMaterial.js.map +1 -0
- package/terrain/index.d.ts +1 -0
- package/terrain/index.js +2 -0
- package/terrain/index.js.map +1 -0
- package/terrain/terrain.fragment.d.ts +19 -0
- package/terrain/terrain.fragment.js +110 -0
- package/terrain/terrain.fragment.js.map +1 -0
- package/terrain/terrain.vertex.d.ts +21 -0
- package/terrain/terrain.vertex.js +96 -0
- package/terrain/terrain.vertex.js.map +1 -0
- package/terrain/terrainMaterial.d.ts +50 -0
- package/terrain/terrainMaterial.js +445 -0
- package/terrain/terrainMaterial.js.map +1 -0
- package/triPlanar/index.d.ts +1 -0
- package/triPlanar/index.js +2 -0
- package/triPlanar/index.js.map +1 -0
- package/triPlanar/triPlanarMaterial.d.ts +49 -0
- package/triPlanar/triPlanarMaterial.js +421 -0
- package/triPlanar/triPlanarMaterial.js.map +1 -0
- package/triPlanar/triplanar.fragment.d.ts +19 -0
- package/triPlanar/triplanar.fragment.js +126 -0
- package/triPlanar/triplanar.fragment.js.map +1 -0
- package/triPlanar/triplanar.vertex.d.ts +22 -0
- package/triPlanar/triplanar.vertex.js +101 -0
- package/triPlanar/triplanar.vertex.js.map +1 -0
- package/water/index.d.ts +1 -0
- package/water/index.js +2 -0
- package/water/index.js.map +1 -0
- package/water/water.fragment.d.ts +19 -0
- package/water/water.fragment.js +160 -0
- package/water/water.fragment.js.map +1 -0
- package/water/water.vertex.d.ts +21 -0
- package/water/water.vertex.js +125 -0
- package/water/water.vertex.js.map +1 -0
- package/water/waterMaterial.d.ts +141 -0
- package/water/waterMaterial.js +729 -0
- package/water/waterMaterial.js.map +1 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { Nullable } from "@babylonjs/core/types.js";
|
|
2
|
+
import type { Matrix } from "@babylonjs/core/Maths/math.vector.js";
|
|
3
|
+
import { Color3 } from "@babylonjs/core/Maths/math.color.js";
|
|
4
|
+
import type { IAnimatable } from "@babylonjs/core/Animations/animatable.interface.js";
|
|
5
|
+
import type { BaseTexture } from "@babylonjs/core/Materials/Textures/baseTexture.js";
|
|
6
|
+
import type { Texture } from "@babylonjs/core/Materials/Textures/texture.js";
|
|
7
|
+
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
|
8
|
+
import type { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
|
|
9
|
+
import type { SubMesh } from "@babylonjs/core/Meshes/subMesh.js";
|
|
10
|
+
import type { Mesh } from "@babylonjs/core/Meshes/mesh.js";
|
|
11
|
+
import { Scene } from "@babylonjs/core/scene.js";
|
|
12
|
+
import "./mix.fragment.js";
|
|
13
|
+
import "./mix.vertex.js";
|
|
14
|
+
export declare class MixMaterial extends PushMaterial {
|
|
15
|
+
/**
|
|
16
|
+
* Mix textures
|
|
17
|
+
*/
|
|
18
|
+
private _mixTexture1;
|
|
19
|
+
mixTexture1: BaseTexture;
|
|
20
|
+
private _mixTexture2;
|
|
21
|
+
mixTexture2: BaseTexture;
|
|
22
|
+
/**
|
|
23
|
+
* Diffuse textures
|
|
24
|
+
*/
|
|
25
|
+
private _diffuseTexture1;
|
|
26
|
+
diffuseTexture1: Texture;
|
|
27
|
+
private _diffuseTexture2;
|
|
28
|
+
diffuseTexture2: Texture;
|
|
29
|
+
private _diffuseTexture3;
|
|
30
|
+
diffuseTexture3: Texture;
|
|
31
|
+
private _diffuseTexture4;
|
|
32
|
+
diffuseTexture4: Texture;
|
|
33
|
+
private _diffuseTexture5;
|
|
34
|
+
diffuseTexture5: Texture;
|
|
35
|
+
private _diffuseTexture6;
|
|
36
|
+
diffuseTexture6: Texture;
|
|
37
|
+
private _diffuseTexture7;
|
|
38
|
+
diffuseTexture7: Texture;
|
|
39
|
+
private _diffuseTexture8;
|
|
40
|
+
diffuseTexture8: Texture;
|
|
41
|
+
/**
|
|
42
|
+
* Uniforms
|
|
43
|
+
*/
|
|
44
|
+
diffuseColor: Color3;
|
|
45
|
+
specularColor: Color3;
|
|
46
|
+
specularPower: number;
|
|
47
|
+
private _disableLighting;
|
|
48
|
+
disableLighting: boolean;
|
|
49
|
+
private _maxSimultaneousLights;
|
|
50
|
+
maxSimultaneousLights: number;
|
|
51
|
+
constructor(name: string, scene?: Scene);
|
|
52
|
+
needAlphaBlending(): boolean;
|
|
53
|
+
needAlphaTesting(): boolean;
|
|
54
|
+
getAlphaTestTexture(): Nullable<BaseTexture>;
|
|
55
|
+
isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean;
|
|
56
|
+
bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void;
|
|
57
|
+
getAnimatables(): IAnimatable[];
|
|
58
|
+
getActiveTextures(): BaseTexture[];
|
|
59
|
+
hasTexture(texture: BaseTexture): boolean;
|
|
60
|
+
dispose(forceDisposeEffect?: boolean): void;
|
|
61
|
+
clone(name: string): MixMaterial;
|
|
62
|
+
serialize(): any;
|
|
63
|
+
getClassName(): string;
|
|
64
|
+
static Parse(source: any, scene: Scene, rootUrl: string): MixMaterial;
|
|
65
|
+
}
|
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
import { __decorate } from "@babylonjs/core/tslib.es6.js";
|
|
2
|
+
import { serializeAsTexture, serialize, expandToProperty, serializeAsColor3 } from "@babylonjs/core/Misc/decorators.js";
|
|
3
|
+
import { SerializationHelper } from "@babylonjs/core/Misc/decorators.serialization.js";
|
|
4
|
+
import { Color3 } from "@babylonjs/core/Maths/math.color.js";
|
|
5
|
+
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.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 "./mix.fragment.js";
|
|
12
|
+
import "./mix.vertex.js";
|
|
13
|
+
import { EffectFallbacks } from "@babylonjs/core/Materials/effectFallbacks.js";
|
|
14
|
+
import { AddClipPlaneUniforms, BindClipPlane } from "@babylonjs/core/Materials/clipPlaneMaterialHelper.js";
|
|
15
|
+
import { BindBonesParameters, BindFogParameters, BindLights, BindLogDepth, HandleFallbacksForShadows, PrepareAttributesForBones, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareDefinesForFrameBoundValues, PrepareDefinesForLights, PrepareDefinesForMisc, PrepareUniformsAndSamplersList, } from "@babylonjs/core/Materials/materialHelper.functions.js";
|
|
16
|
+
class MixMaterialDefines extends MaterialDefines {
|
|
17
|
+
constructor() {
|
|
18
|
+
super();
|
|
19
|
+
this.DIFFUSE = false;
|
|
20
|
+
this.CLIPPLANE = false;
|
|
21
|
+
this.CLIPPLANE2 = false;
|
|
22
|
+
this.CLIPPLANE3 = false;
|
|
23
|
+
this.CLIPPLANE4 = false;
|
|
24
|
+
this.CLIPPLANE5 = false;
|
|
25
|
+
this.CLIPPLANE6 = false;
|
|
26
|
+
this.ALPHATEST = false;
|
|
27
|
+
this.DEPTHPREPASS = false;
|
|
28
|
+
this.POINTSIZE = false;
|
|
29
|
+
this.FOG = false;
|
|
30
|
+
this.SPECULARTERM = false;
|
|
31
|
+
this.NORMAL = false;
|
|
32
|
+
this.UV1 = false;
|
|
33
|
+
this.UV2 = false;
|
|
34
|
+
this.VERTEXCOLOR = false;
|
|
35
|
+
this.VERTEXALPHA = false;
|
|
36
|
+
this.NUM_BONE_INFLUENCERS = 0;
|
|
37
|
+
this.BonesPerMesh = 0;
|
|
38
|
+
this.INSTANCES = false;
|
|
39
|
+
this.INSTANCESCOLOR = false;
|
|
40
|
+
this.MIXMAP2 = false;
|
|
41
|
+
this.IMAGEPROCESSINGPOSTPROCESS = false;
|
|
42
|
+
this.SKIPFINALCOLORCLAMP = false;
|
|
43
|
+
this.LOGARITHMICDEPTH = false;
|
|
44
|
+
this.rebuild();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export class MixMaterial extends PushMaterial {
|
|
48
|
+
constructor(name, scene) {
|
|
49
|
+
super(name, scene);
|
|
50
|
+
/**
|
|
51
|
+
* Uniforms
|
|
52
|
+
*/
|
|
53
|
+
this.diffuseColor = new Color3(1, 1, 1);
|
|
54
|
+
this.specularColor = new Color3(0, 0, 0);
|
|
55
|
+
this.specularPower = 64;
|
|
56
|
+
this._disableLighting = false;
|
|
57
|
+
this._maxSimultaneousLights = 4;
|
|
58
|
+
}
|
|
59
|
+
needAlphaBlending() {
|
|
60
|
+
return this.alpha < 1.0;
|
|
61
|
+
}
|
|
62
|
+
needAlphaTesting() {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
getAlphaTestTexture() {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
// Methods
|
|
69
|
+
isReadyForSubMesh(mesh, subMesh, useInstances) {
|
|
70
|
+
const drawWrapper = subMesh._drawWrapper;
|
|
71
|
+
if (this.isFrozen) {
|
|
72
|
+
if (drawWrapper.effect && drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (!subMesh.materialDefines) {
|
|
77
|
+
subMesh.materialDefines = new MixMaterialDefines();
|
|
78
|
+
}
|
|
79
|
+
const defines = subMesh.materialDefines;
|
|
80
|
+
const scene = this.getScene();
|
|
81
|
+
if (this._isReadyForSubMesh(subMesh)) {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
const engine = scene.getEngine();
|
|
85
|
+
// Textures
|
|
86
|
+
if (scene.texturesEnabled) {
|
|
87
|
+
if (!this._mixTexture1 || !this._mixTexture1.isReady()) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
defines._needUVs = true;
|
|
91
|
+
if (MaterialFlags.DiffuseTextureEnabled) {
|
|
92
|
+
if (!this._diffuseTexture1 || !this._diffuseTexture1.isReady()) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
defines.DIFFUSE = true;
|
|
96
|
+
if (!this._diffuseTexture2 || !this._diffuseTexture2.isReady()) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
if (!this._diffuseTexture3 || !this._diffuseTexture3.isReady()) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
if (!this._diffuseTexture4 || !this._diffuseTexture4.isReady()) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
if (this._mixTexture2) {
|
|
106
|
+
if (!this._mixTexture2.isReady()) {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
defines.MIXMAP2 = true;
|
|
110
|
+
if (!this._diffuseTexture5 || !this._diffuseTexture5.isReady()) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
if (!this._diffuseTexture6 || !this._diffuseTexture6.isReady()) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
if (!this._diffuseTexture7 || !this._diffuseTexture7.isReady()) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
if (!this._diffuseTexture8 || !this._diffuseTexture8.isReady()) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Misc.
|
|
126
|
+
PrepareDefinesForMisc(mesh, scene, this._useLogarithmicDepth, this.pointsCloud, this.fogEnabled, this.needAlphaTestingForMesh(mesh), defines);
|
|
127
|
+
// Lights
|
|
128
|
+
defines._needNormals = PrepareDefinesForLights(scene, mesh, defines, false, this._maxSimultaneousLights, this._disableLighting);
|
|
129
|
+
// Values that need to be evaluated on every frame
|
|
130
|
+
PrepareDefinesForFrameBoundValues(scene, engine, this, defines, useInstances ? true : false);
|
|
131
|
+
// Attribs
|
|
132
|
+
PrepareDefinesForAttributes(mesh, defines, true, true);
|
|
133
|
+
// Get correct effect
|
|
134
|
+
if (defines.isDirty) {
|
|
135
|
+
defines.markAsProcessed();
|
|
136
|
+
scene.resetCachedMaterial();
|
|
137
|
+
// Fallbacks
|
|
138
|
+
const fallbacks = new EffectFallbacks();
|
|
139
|
+
if (defines.FOG) {
|
|
140
|
+
fallbacks.addFallback(1, "FOG");
|
|
141
|
+
}
|
|
142
|
+
HandleFallbacksForShadows(defines, fallbacks, this.maxSimultaneousLights);
|
|
143
|
+
if (defines.NUM_BONE_INFLUENCERS > 0) {
|
|
144
|
+
fallbacks.addCPUSkinningFallback(0, mesh);
|
|
145
|
+
}
|
|
146
|
+
defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
|
|
147
|
+
//Attributes
|
|
148
|
+
const attribs = [VertexBuffer.PositionKind];
|
|
149
|
+
if (defines.NORMAL) {
|
|
150
|
+
attribs.push(VertexBuffer.NormalKind);
|
|
151
|
+
}
|
|
152
|
+
if (defines.UV1) {
|
|
153
|
+
attribs.push(VertexBuffer.UVKind);
|
|
154
|
+
}
|
|
155
|
+
if (defines.UV2) {
|
|
156
|
+
attribs.push(VertexBuffer.UV2Kind);
|
|
157
|
+
}
|
|
158
|
+
if (defines.VERTEXCOLOR) {
|
|
159
|
+
attribs.push(VertexBuffer.ColorKind);
|
|
160
|
+
}
|
|
161
|
+
PrepareAttributesForBones(attribs, mesh, defines, fallbacks);
|
|
162
|
+
PrepareAttributesForInstances(attribs, defines);
|
|
163
|
+
// Legacy browser patch
|
|
164
|
+
const shaderName = "mix";
|
|
165
|
+
const join = defines.toString();
|
|
166
|
+
const uniforms = [
|
|
167
|
+
"world",
|
|
168
|
+
"view",
|
|
169
|
+
"viewProjection",
|
|
170
|
+
"vEyePosition",
|
|
171
|
+
"vLightsType",
|
|
172
|
+
"vDiffuseColor",
|
|
173
|
+
"vSpecularColor",
|
|
174
|
+
"vFogInfos",
|
|
175
|
+
"vFogColor",
|
|
176
|
+
"pointSize",
|
|
177
|
+
"vTextureInfos",
|
|
178
|
+
"mBones",
|
|
179
|
+
"textureMatrix",
|
|
180
|
+
"logarithmicDepthConstant",
|
|
181
|
+
"diffuse1Infos",
|
|
182
|
+
"diffuse2Infos",
|
|
183
|
+
"diffuse3Infos",
|
|
184
|
+
"diffuse4Infos",
|
|
185
|
+
"diffuse5Infos",
|
|
186
|
+
"diffuse6Infos",
|
|
187
|
+
"diffuse7Infos",
|
|
188
|
+
"diffuse8Infos",
|
|
189
|
+
];
|
|
190
|
+
const samplers = [
|
|
191
|
+
"mixMap1Sampler",
|
|
192
|
+
"mixMap2Sampler",
|
|
193
|
+
"diffuse1Sampler",
|
|
194
|
+
"diffuse2Sampler",
|
|
195
|
+
"diffuse3Sampler",
|
|
196
|
+
"diffuse4Sampler",
|
|
197
|
+
"diffuse5Sampler",
|
|
198
|
+
"diffuse6Sampler",
|
|
199
|
+
"diffuse7Sampler",
|
|
200
|
+
"diffuse8Sampler",
|
|
201
|
+
];
|
|
202
|
+
const uniformBuffers = [];
|
|
203
|
+
AddClipPlaneUniforms(uniforms);
|
|
204
|
+
PrepareUniformsAndSamplersList({
|
|
205
|
+
uniformsNames: uniforms,
|
|
206
|
+
uniformBuffersNames: uniformBuffers,
|
|
207
|
+
samplers: samplers,
|
|
208
|
+
defines: defines,
|
|
209
|
+
maxSimultaneousLights: this.maxSimultaneousLights,
|
|
210
|
+
});
|
|
211
|
+
subMesh.setEffect(scene.getEngine().createEffect(shaderName, {
|
|
212
|
+
attributes: attribs,
|
|
213
|
+
uniformsNames: uniforms,
|
|
214
|
+
uniformBuffersNames: uniformBuffers,
|
|
215
|
+
samplers: samplers,
|
|
216
|
+
defines: join,
|
|
217
|
+
fallbacks: fallbacks,
|
|
218
|
+
onCompiled: this.onCompiled,
|
|
219
|
+
onError: this.onError,
|
|
220
|
+
indexParameters: { maxSimultaneousLights: this.maxSimultaneousLights },
|
|
221
|
+
}, engine), defines, this._materialContext);
|
|
222
|
+
}
|
|
223
|
+
if (!subMesh.effect || !subMesh.effect.isReady()) {
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
defines._renderId = scene.getRenderId();
|
|
227
|
+
drawWrapper._wasPreviouslyReady = true;
|
|
228
|
+
drawWrapper._wasPreviouslyUsingInstances = !!useInstances;
|
|
229
|
+
return true;
|
|
230
|
+
}
|
|
231
|
+
bindForSubMesh(world, mesh, subMesh) {
|
|
232
|
+
const scene = this.getScene();
|
|
233
|
+
const defines = subMesh.materialDefines;
|
|
234
|
+
if (!defines) {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
const effect = subMesh.effect;
|
|
238
|
+
if (!effect) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
this._activeEffect = effect;
|
|
242
|
+
// Matrices
|
|
243
|
+
this.bindOnlyWorldMatrix(world);
|
|
244
|
+
this._activeEffect.setMatrix("viewProjection", scene.getTransformMatrix());
|
|
245
|
+
// Bones
|
|
246
|
+
BindBonesParameters(mesh, this._activeEffect);
|
|
247
|
+
if (this._mustRebind(scene, effect, subMesh)) {
|
|
248
|
+
// Textures
|
|
249
|
+
if (this._mixTexture1) {
|
|
250
|
+
this._activeEffect.setTexture("mixMap1Sampler", this._mixTexture1);
|
|
251
|
+
this._activeEffect.setFloat2("vTextureInfos", this._mixTexture1.coordinatesIndex, this._mixTexture1.level);
|
|
252
|
+
this._activeEffect.setMatrix("textureMatrix", this._mixTexture1.getTextureMatrix());
|
|
253
|
+
if (MaterialFlags.DiffuseTextureEnabled) {
|
|
254
|
+
if (this._diffuseTexture1) {
|
|
255
|
+
this._activeEffect.setTexture("diffuse1Sampler", this._diffuseTexture1);
|
|
256
|
+
this._activeEffect.setFloat2("diffuse1Infos", this._diffuseTexture1.uScale, this._diffuseTexture1.vScale);
|
|
257
|
+
}
|
|
258
|
+
if (this._diffuseTexture2) {
|
|
259
|
+
this._activeEffect.setTexture("diffuse2Sampler", this._diffuseTexture2);
|
|
260
|
+
this._activeEffect.setFloat2("diffuse2Infos", this._diffuseTexture2.uScale, this._diffuseTexture2.vScale);
|
|
261
|
+
}
|
|
262
|
+
if (this._diffuseTexture3) {
|
|
263
|
+
this._activeEffect.setTexture("diffuse3Sampler", this._diffuseTexture3);
|
|
264
|
+
this._activeEffect.setFloat2("diffuse3Infos", this._diffuseTexture3.uScale, this._diffuseTexture3.vScale);
|
|
265
|
+
}
|
|
266
|
+
if (this._diffuseTexture4) {
|
|
267
|
+
this._activeEffect.setTexture("diffuse4Sampler", this._diffuseTexture4);
|
|
268
|
+
this._activeEffect.setFloat2("diffuse4Infos", this._diffuseTexture4.uScale, this._diffuseTexture4.vScale);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
if (this._mixTexture2) {
|
|
273
|
+
this._activeEffect.setTexture("mixMap2Sampler", this._mixTexture2);
|
|
274
|
+
if (MaterialFlags.DiffuseTextureEnabled) {
|
|
275
|
+
if (this._diffuseTexture5) {
|
|
276
|
+
this._activeEffect.setTexture("diffuse5Sampler", this._diffuseTexture5);
|
|
277
|
+
this._activeEffect.setFloat2("diffuse5Infos", this._diffuseTexture5.uScale, this._diffuseTexture5.vScale);
|
|
278
|
+
}
|
|
279
|
+
if (this._diffuseTexture6) {
|
|
280
|
+
this._activeEffect.setTexture("diffuse6Sampler", this._diffuseTexture6);
|
|
281
|
+
this._activeEffect.setFloat2("diffuse6Infos", this._diffuseTexture6.uScale, this._diffuseTexture6.vScale);
|
|
282
|
+
}
|
|
283
|
+
if (this._diffuseTexture7) {
|
|
284
|
+
this._activeEffect.setTexture("diffuse7Sampler", this._diffuseTexture7);
|
|
285
|
+
this._activeEffect.setFloat2("diffuse7Infos", this._diffuseTexture7.uScale, this._diffuseTexture7.vScale);
|
|
286
|
+
}
|
|
287
|
+
if (this._diffuseTexture8) {
|
|
288
|
+
this._activeEffect.setTexture("diffuse8Sampler", this._diffuseTexture8);
|
|
289
|
+
this._activeEffect.setFloat2("diffuse8Infos", this._diffuseTexture8.uScale, this._diffuseTexture8.vScale);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// Clip plane
|
|
294
|
+
BindClipPlane(effect, this, scene);
|
|
295
|
+
// Point size
|
|
296
|
+
if (this.pointsCloud) {
|
|
297
|
+
this._activeEffect.setFloat("pointSize", this.pointSize);
|
|
298
|
+
}
|
|
299
|
+
// Log. depth
|
|
300
|
+
if (this._useLogarithmicDepth) {
|
|
301
|
+
BindLogDepth(defines, effect, scene);
|
|
302
|
+
}
|
|
303
|
+
scene.bindEyePosition(effect);
|
|
304
|
+
}
|
|
305
|
+
this._activeEffect.setColor4("vDiffuseColor", this.diffuseColor, this.alpha * mesh.visibility);
|
|
306
|
+
if (defines.SPECULARTERM) {
|
|
307
|
+
this._activeEffect.setColor4("vSpecularColor", this.specularColor, this.specularPower);
|
|
308
|
+
}
|
|
309
|
+
if (scene.lightsEnabled && !this.disableLighting) {
|
|
310
|
+
BindLights(scene, mesh, this._activeEffect, defines, this.maxSimultaneousLights);
|
|
311
|
+
}
|
|
312
|
+
// View
|
|
313
|
+
if (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) {
|
|
314
|
+
this._activeEffect.setMatrix("view", scene.getViewMatrix());
|
|
315
|
+
}
|
|
316
|
+
// Fog
|
|
317
|
+
BindFogParameters(scene, mesh, this._activeEffect);
|
|
318
|
+
this._afterBind(mesh, this._activeEffect, subMesh);
|
|
319
|
+
}
|
|
320
|
+
getAnimatables() {
|
|
321
|
+
const results = [];
|
|
322
|
+
if (this._mixTexture1 && this._mixTexture1.animations && this._mixTexture1.animations.length > 0) {
|
|
323
|
+
results.push(this._mixTexture1);
|
|
324
|
+
}
|
|
325
|
+
if (this._mixTexture2 && this._mixTexture2.animations && this._mixTexture2.animations.length > 0) {
|
|
326
|
+
results.push(this._mixTexture2);
|
|
327
|
+
}
|
|
328
|
+
return results;
|
|
329
|
+
}
|
|
330
|
+
getActiveTextures() {
|
|
331
|
+
const activeTextures = super.getActiveTextures();
|
|
332
|
+
// Mix map 1
|
|
333
|
+
if (this._mixTexture1) {
|
|
334
|
+
activeTextures.push(this._mixTexture1);
|
|
335
|
+
}
|
|
336
|
+
if (this._diffuseTexture1) {
|
|
337
|
+
activeTextures.push(this._diffuseTexture1);
|
|
338
|
+
}
|
|
339
|
+
if (this._diffuseTexture2) {
|
|
340
|
+
activeTextures.push(this._diffuseTexture2);
|
|
341
|
+
}
|
|
342
|
+
if (this._diffuseTexture3) {
|
|
343
|
+
activeTextures.push(this._diffuseTexture3);
|
|
344
|
+
}
|
|
345
|
+
if (this._diffuseTexture4) {
|
|
346
|
+
activeTextures.push(this._diffuseTexture4);
|
|
347
|
+
}
|
|
348
|
+
// Mix map 2
|
|
349
|
+
if (this._mixTexture2) {
|
|
350
|
+
activeTextures.push(this._mixTexture2);
|
|
351
|
+
}
|
|
352
|
+
if (this._diffuseTexture5) {
|
|
353
|
+
activeTextures.push(this._diffuseTexture5);
|
|
354
|
+
}
|
|
355
|
+
if (this._diffuseTexture6) {
|
|
356
|
+
activeTextures.push(this._diffuseTexture6);
|
|
357
|
+
}
|
|
358
|
+
if (this._diffuseTexture7) {
|
|
359
|
+
activeTextures.push(this._diffuseTexture7);
|
|
360
|
+
}
|
|
361
|
+
if (this._diffuseTexture8) {
|
|
362
|
+
activeTextures.push(this._diffuseTexture8);
|
|
363
|
+
}
|
|
364
|
+
return activeTextures;
|
|
365
|
+
}
|
|
366
|
+
hasTexture(texture) {
|
|
367
|
+
if (super.hasTexture(texture)) {
|
|
368
|
+
return true;
|
|
369
|
+
}
|
|
370
|
+
// Mix map 1
|
|
371
|
+
if (this._mixTexture1 === texture) {
|
|
372
|
+
return true;
|
|
373
|
+
}
|
|
374
|
+
if (this._diffuseTexture1 === texture) {
|
|
375
|
+
return true;
|
|
376
|
+
}
|
|
377
|
+
if (this._diffuseTexture2 === texture) {
|
|
378
|
+
return true;
|
|
379
|
+
}
|
|
380
|
+
if (this._diffuseTexture3 === texture) {
|
|
381
|
+
return true;
|
|
382
|
+
}
|
|
383
|
+
if (this._diffuseTexture4 === texture) {
|
|
384
|
+
return true;
|
|
385
|
+
}
|
|
386
|
+
// Mix map 2
|
|
387
|
+
if (this._mixTexture2 === texture) {
|
|
388
|
+
return true;
|
|
389
|
+
}
|
|
390
|
+
if (this._diffuseTexture5 === texture) {
|
|
391
|
+
return true;
|
|
392
|
+
}
|
|
393
|
+
if (this._diffuseTexture6 === texture) {
|
|
394
|
+
return true;
|
|
395
|
+
}
|
|
396
|
+
if (this._diffuseTexture7 === texture) {
|
|
397
|
+
return true;
|
|
398
|
+
}
|
|
399
|
+
if (this._diffuseTexture8 === texture) {
|
|
400
|
+
return true;
|
|
401
|
+
}
|
|
402
|
+
return false;
|
|
403
|
+
}
|
|
404
|
+
dispose(forceDisposeEffect) {
|
|
405
|
+
if (this._mixTexture1) {
|
|
406
|
+
this._mixTexture1.dispose();
|
|
407
|
+
}
|
|
408
|
+
super.dispose(forceDisposeEffect);
|
|
409
|
+
}
|
|
410
|
+
clone(name) {
|
|
411
|
+
return SerializationHelper.Clone(() => new MixMaterial(name, this.getScene()), this);
|
|
412
|
+
}
|
|
413
|
+
serialize() {
|
|
414
|
+
const serializationObject = super.serialize();
|
|
415
|
+
serializationObject.customType = "BABYLON.MixMaterial";
|
|
416
|
+
return serializationObject;
|
|
417
|
+
}
|
|
418
|
+
getClassName() {
|
|
419
|
+
return "MixMaterial";
|
|
420
|
+
}
|
|
421
|
+
// Statics
|
|
422
|
+
static Parse(source, scene, rootUrl) {
|
|
423
|
+
return SerializationHelper.Parse(() => new MixMaterial(source.name, scene), source, scene, rootUrl);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
__decorate([
|
|
427
|
+
serializeAsTexture("mixTexture1")
|
|
428
|
+
], MixMaterial.prototype, "_mixTexture1", void 0);
|
|
429
|
+
__decorate([
|
|
430
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
431
|
+
], MixMaterial.prototype, "mixTexture1", void 0);
|
|
432
|
+
__decorate([
|
|
433
|
+
serializeAsTexture("mixTexture2")
|
|
434
|
+
], MixMaterial.prototype, "_mixTexture2", void 0);
|
|
435
|
+
__decorate([
|
|
436
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
437
|
+
], MixMaterial.prototype, "mixTexture2", void 0);
|
|
438
|
+
__decorate([
|
|
439
|
+
serializeAsTexture("diffuseTexture1")
|
|
440
|
+
], MixMaterial.prototype, "_diffuseTexture1", void 0);
|
|
441
|
+
__decorate([
|
|
442
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
443
|
+
], MixMaterial.prototype, "diffuseTexture1", void 0);
|
|
444
|
+
__decorate([
|
|
445
|
+
serializeAsTexture("diffuseTexture2")
|
|
446
|
+
], MixMaterial.prototype, "_diffuseTexture2", void 0);
|
|
447
|
+
__decorate([
|
|
448
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
449
|
+
], MixMaterial.prototype, "diffuseTexture2", void 0);
|
|
450
|
+
__decorate([
|
|
451
|
+
serializeAsTexture("diffuseTexture3")
|
|
452
|
+
], MixMaterial.prototype, "_diffuseTexture3", void 0);
|
|
453
|
+
__decorate([
|
|
454
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
455
|
+
], MixMaterial.prototype, "diffuseTexture3", void 0);
|
|
456
|
+
__decorate([
|
|
457
|
+
serializeAsTexture("diffuseTexture4")
|
|
458
|
+
], MixMaterial.prototype, "_diffuseTexture4", void 0);
|
|
459
|
+
__decorate([
|
|
460
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
461
|
+
], MixMaterial.prototype, "diffuseTexture4", void 0);
|
|
462
|
+
__decorate([
|
|
463
|
+
serializeAsTexture("diffuseTexture1")
|
|
464
|
+
], MixMaterial.prototype, "_diffuseTexture5", void 0);
|
|
465
|
+
__decorate([
|
|
466
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
467
|
+
], MixMaterial.prototype, "diffuseTexture5", void 0);
|
|
468
|
+
__decorate([
|
|
469
|
+
serializeAsTexture("diffuseTexture2")
|
|
470
|
+
], MixMaterial.prototype, "_diffuseTexture6", void 0);
|
|
471
|
+
__decorate([
|
|
472
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
473
|
+
], MixMaterial.prototype, "diffuseTexture6", void 0);
|
|
474
|
+
__decorate([
|
|
475
|
+
serializeAsTexture("diffuseTexture3")
|
|
476
|
+
], MixMaterial.prototype, "_diffuseTexture7", void 0);
|
|
477
|
+
__decorate([
|
|
478
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
479
|
+
], MixMaterial.prototype, "diffuseTexture7", void 0);
|
|
480
|
+
__decorate([
|
|
481
|
+
serializeAsTexture("diffuseTexture4")
|
|
482
|
+
], MixMaterial.prototype, "_diffuseTexture8", void 0);
|
|
483
|
+
__decorate([
|
|
484
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
485
|
+
], MixMaterial.prototype, "diffuseTexture8", void 0);
|
|
486
|
+
__decorate([
|
|
487
|
+
serializeAsColor3()
|
|
488
|
+
], MixMaterial.prototype, "diffuseColor", void 0);
|
|
489
|
+
__decorate([
|
|
490
|
+
serializeAsColor3()
|
|
491
|
+
], MixMaterial.prototype, "specularColor", void 0);
|
|
492
|
+
__decorate([
|
|
493
|
+
serialize()
|
|
494
|
+
], MixMaterial.prototype, "specularPower", void 0);
|
|
495
|
+
__decorate([
|
|
496
|
+
serialize("disableLighting")
|
|
497
|
+
], MixMaterial.prototype, "_disableLighting", void 0);
|
|
498
|
+
__decorate([
|
|
499
|
+
expandToProperty("_markAllSubMeshesAsLightsDirty")
|
|
500
|
+
], MixMaterial.prototype, "disableLighting", void 0);
|
|
501
|
+
__decorate([
|
|
502
|
+
serialize("maxSimultaneousLights")
|
|
503
|
+
], MixMaterial.prototype, "_maxSimultaneousLights", void 0);
|
|
504
|
+
__decorate([
|
|
505
|
+
expandToProperty("_markAllSubMeshesAsLightsDirty")
|
|
506
|
+
], MixMaterial.prototype, "maxSimultaneousLights", void 0);
|
|
507
|
+
RegisterClass("BABYLON.MixMaterial", MixMaterial);
|
|
508
|
+
//# sourceMappingURL=mixMaterial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mixMaterial.js","sourceRoot":"","sources":["../../../../dev/materials/src/mix/mixMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"core/types\";\r\nimport { serializeAsTexture, serialize, expandToProperty, serializeAsColor3 } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport type { Texture } from \"core/Materials/Textures/texture\";\r\nimport type { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { MaterialFlags } from \"core/Materials/materialFlags\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\n\r\nimport \"./mix.fragment\";\r\nimport \"./mix.vertex\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { AddClipPlaneUniforms, BindClipPlane } from \"core/Materials/clipPlaneMaterialHelper\";\r\nimport {\r\n BindBonesParameters,\r\n BindFogParameters,\r\n BindLights,\r\n BindLogDepth,\r\n HandleFallbacksForShadows,\r\n PrepareAttributesForBones,\r\n PrepareAttributesForInstances,\r\n PrepareDefinesForAttributes,\r\n PrepareDefinesForFrameBoundValues,\r\n PrepareDefinesForLights,\r\n PrepareDefinesForMisc,\r\n PrepareUniformsAndSamplersList,\r\n} from \"core/Materials/materialHelper.functions\";\r\n\r\nclass MixMaterialDefines 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 SPECULARTERM = 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 MIXMAP2 = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n public SKIPFINALCOLORCLAMP = false;\r\n public LOGARITHMICDEPTH = false;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class MixMaterial extends PushMaterial {\r\n /**\r\n * Mix textures\r\n */\r\n\r\n @serializeAsTexture(\"mixTexture1\")\r\n private _mixTexture1: BaseTexture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public mixTexture1: BaseTexture;\r\n\r\n @serializeAsTexture(\"mixTexture2\")\r\n private _mixTexture2: BaseTexture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public mixTexture2: BaseTexture;\r\n\r\n /**\r\n * Diffuse textures\r\n */\r\n\r\n @serializeAsTexture(\"diffuseTexture1\")\r\n private _diffuseTexture1: Texture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public diffuseTexture1: Texture;\r\n\r\n @serializeAsTexture(\"diffuseTexture2\")\r\n private _diffuseTexture2: Texture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public diffuseTexture2: Texture;\r\n\r\n @serializeAsTexture(\"diffuseTexture3\")\r\n private _diffuseTexture3: Texture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public diffuseTexture3: Texture;\r\n\r\n @serializeAsTexture(\"diffuseTexture4\")\r\n private _diffuseTexture4: Texture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public diffuseTexture4: Texture;\r\n\r\n @serializeAsTexture(\"diffuseTexture1\")\r\n private _diffuseTexture5: Texture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public diffuseTexture5: Texture;\r\n\r\n @serializeAsTexture(\"diffuseTexture2\")\r\n private _diffuseTexture6: Texture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public diffuseTexture6: Texture;\r\n\r\n @serializeAsTexture(\"diffuseTexture3\")\r\n private _diffuseTexture7: Texture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public diffuseTexture7: Texture;\r\n\r\n @serializeAsTexture(\"diffuseTexture4\")\r\n private _diffuseTexture8: Texture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public diffuseTexture8: Texture;\r\n\r\n /**\r\n * Uniforms\r\n */\r\n\r\n @serializeAsColor3()\r\n public diffuseColor = new Color3(1, 1, 1);\r\n\r\n @serializeAsColor3()\r\n public specularColor = new Color3(0, 0, 0);\r\n\r\n @serialize()\r\n public specularPower = 64;\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 override needAlphaBlending(): boolean {\r\n return this.alpha < 1.0;\r\n }\r\n\r\n public override needAlphaTesting(): boolean {\r\n return false;\r\n }\r\n\r\n public override getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n // Methods\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new MixMaterialDefines();\r\n }\r\n\r\n const defines = <MixMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n // Textures\r\n if (scene.texturesEnabled) {\r\n if (!this._mixTexture1 || !this._mixTexture1.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._needUVs = true;\r\n\r\n if (MaterialFlags.DiffuseTextureEnabled) {\r\n if (!this._diffuseTexture1 || !this._diffuseTexture1.isReady()) {\r\n return false;\r\n }\r\n\r\n defines.DIFFUSE = true;\r\n\r\n if (!this._diffuseTexture2 || !this._diffuseTexture2.isReady()) {\r\n return false;\r\n }\r\n if (!this._diffuseTexture3 || !this._diffuseTexture3.isReady()) {\r\n return false;\r\n }\r\n if (!this._diffuseTexture4 || !this._diffuseTexture4.isReady()) {\r\n return false;\r\n }\r\n\r\n if (this._mixTexture2) {\r\n if (!this._mixTexture2.isReady()) {\r\n return false;\r\n }\r\n\r\n defines.MIXMAP2 = true;\r\n\r\n if (!this._diffuseTexture5 || !this._diffuseTexture5.isReady()) {\r\n return false;\r\n }\r\n if (!this._diffuseTexture6 || !this._diffuseTexture6.isReady()) {\r\n return false;\r\n }\r\n if (!this._diffuseTexture7 || !this._diffuseTexture7.isReady()) {\r\n return false;\r\n }\r\n if (!this._diffuseTexture8 || !this._diffuseTexture8.isReady()) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Misc.\r\n PrepareDefinesForMisc(mesh, scene, this._useLogarithmicDepth, this.pointsCloud, this.fogEnabled, this.needAlphaTestingForMesh(mesh), defines);\r\n\r\n // Lights\r\n defines._needNormals = PrepareDefinesForLights(scene, mesh, defines, false, this._maxSimultaneousLights, this._disableLighting);\r\n\r\n // Values that need to be evaluated on every frame\r\n PrepareDefinesForFrameBoundValues(scene, engine, this, defines, useInstances ? true : false);\r\n\r\n // Attribs\r\n 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 const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n 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 const 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 PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"mix\";\r\n const join = defines.toString();\r\n const uniforms = [\r\n \"world\",\r\n \"view\",\r\n \"viewProjection\",\r\n \"vEyePosition\",\r\n \"vLightsType\",\r\n \"vDiffuseColor\",\r\n \"vSpecularColor\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"pointSize\",\r\n \"vTextureInfos\",\r\n \"mBones\",\r\n \"textureMatrix\",\r\n \"logarithmicDepthConstant\",\r\n \"diffuse1Infos\",\r\n \"diffuse2Infos\",\r\n \"diffuse3Infos\",\r\n \"diffuse4Infos\",\r\n \"diffuse5Infos\",\r\n \"diffuse6Infos\",\r\n \"diffuse7Infos\",\r\n \"diffuse8Infos\",\r\n ];\r\n const samplers = [\r\n \"mixMap1Sampler\",\r\n \"mixMap2Sampler\",\r\n \"diffuse1Sampler\",\r\n \"diffuse2Sampler\",\r\n \"diffuse3Sampler\",\r\n \"diffuse4Sampler\",\r\n \"diffuse5Sampler\",\r\n \"diffuse6Sampler\",\r\n \"diffuse7Sampler\",\r\n \"diffuse8Sampler\",\r\n ];\r\n\r\n const uniformBuffers: string[] = [];\r\n\r\n AddClipPlaneUniforms(uniforms);\r\n 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\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n 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 },\r\n },\r\n engine\r\n ),\r\n defines,\r\n 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 drawWrapper._wasPreviouslyReady = true;\r\n drawWrapper._wasPreviouslyUsingInstances = !!useInstances;\r\n\r\n return true;\r\n }\r\n\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <MixMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const 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 BindBonesParameters(mesh, this._activeEffect);\r\n\r\n if (this._mustRebind(scene, effect, subMesh)) {\r\n // Textures\r\n if (this._mixTexture1) {\r\n this._activeEffect.setTexture(\"mixMap1Sampler\", this._mixTexture1);\r\n this._activeEffect.setFloat2(\"vTextureInfos\", this._mixTexture1.coordinatesIndex, this._mixTexture1.level);\r\n this._activeEffect.setMatrix(\"textureMatrix\", this._mixTexture1.getTextureMatrix());\r\n\r\n if (MaterialFlags.DiffuseTextureEnabled) {\r\n if (this._diffuseTexture1) {\r\n this._activeEffect.setTexture(\"diffuse1Sampler\", this._diffuseTexture1);\r\n this._activeEffect.setFloat2(\"diffuse1Infos\", this._diffuseTexture1.uScale, this._diffuseTexture1.vScale);\r\n }\r\n if (this._diffuseTexture2) {\r\n this._activeEffect.setTexture(\"diffuse2Sampler\", this._diffuseTexture2);\r\n this._activeEffect.setFloat2(\"diffuse2Infos\", this._diffuseTexture2.uScale, this._diffuseTexture2.vScale);\r\n }\r\n if (this._diffuseTexture3) {\r\n this._activeEffect.setTexture(\"diffuse3Sampler\", this._diffuseTexture3);\r\n this._activeEffect.setFloat2(\"diffuse3Infos\", this._diffuseTexture3.uScale, this._diffuseTexture3.vScale);\r\n }\r\n if (this._diffuseTexture4) {\r\n this._activeEffect.setTexture(\"diffuse4Sampler\", this._diffuseTexture4);\r\n this._activeEffect.setFloat2(\"diffuse4Infos\", this._diffuseTexture4.uScale, this._diffuseTexture4.vScale);\r\n }\r\n }\r\n }\r\n\r\n if (this._mixTexture2) {\r\n this._activeEffect.setTexture(\"mixMap2Sampler\", this._mixTexture2);\r\n\r\n if (MaterialFlags.DiffuseTextureEnabled) {\r\n if (this._diffuseTexture5) {\r\n this._activeEffect.setTexture(\"diffuse5Sampler\", this._diffuseTexture5);\r\n this._activeEffect.setFloat2(\"diffuse5Infos\", this._diffuseTexture5.uScale, this._diffuseTexture5.vScale);\r\n }\r\n if (this._diffuseTexture6) {\r\n this._activeEffect.setTexture(\"diffuse6Sampler\", this._diffuseTexture6);\r\n this._activeEffect.setFloat2(\"diffuse6Infos\", this._diffuseTexture6.uScale, this._diffuseTexture6.vScale);\r\n }\r\n if (this._diffuseTexture7) {\r\n this._activeEffect.setTexture(\"diffuse7Sampler\", this._diffuseTexture7);\r\n this._activeEffect.setFloat2(\"diffuse7Infos\", this._diffuseTexture7.uScale, this._diffuseTexture7.vScale);\r\n }\r\n if (this._diffuseTexture8) {\r\n this._activeEffect.setTexture(\"diffuse8Sampler\", this._diffuseTexture8);\r\n this._activeEffect.setFloat2(\"diffuse8Infos\", this._diffuseTexture8.uScale, this._diffuseTexture8.vScale);\r\n }\r\n }\r\n }\r\n\r\n // Clip plane\r\n BindClipPlane(effect, this, 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 // Log. depth\r\n if (this._useLogarithmicDepth) {\r\n BindLogDepth(defines, effect, scene);\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 if (defines.SPECULARTERM) {\r\n this._activeEffect.setColor4(\"vSpecularColor\", this.specularColor, this.specularPower);\r\n }\r\n\r\n if (scene.lightsEnabled && !this.disableLighting) {\r\n 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 BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n public override getAnimatables(): IAnimatable[] {\r\n const results = [];\r\n\r\n if (this._mixTexture1 && this._mixTexture1.animations && this._mixTexture1.animations.length > 0) {\r\n results.push(this._mixTexture1);\r\n }\r\n\r\n if (this._mixTexture2 && this._mixTexture2.animations && this._mixTexture2.animations.length > 0) {\r\n results.push(this._mixTexture2);\r\n }\r\n\r\n return results;\r\n }\r\n\r\n public override getActiveTextures(): BaseTexture[] {\r\n const activeTextures = super.getActiveTextures();\r\n\r\n // Mix map 1\r\n if (this._mixTexture1) {\r\n activeTextures.push(this._mixTexture1);\r\n }\r\n\r\n if (this._diffuseTexture1) {\r\n activeTextures.push(this._diffuseTexture1);\r\n }\r\n\r\n if (this._diffuseTexture2) {\r\n activeTextures.push(this._diffuseTexture2);\r\n }\r\n\r\n if (this._diffuseTexture3) {\r\n activeTextures.push(this._diffuseTexture3);\r\n }\r\n\r\n if (this._diffuseTexture4) {\r\n activeTextures.push(this._diffuseTexture4);\r\n }\r\n\r\n // Mix map 2\r\n if (this._mixTexture2) {\r\n activeTextures.push(this._mixTexture2);\r\n }\r\n\r\n if (this._diffuseTexture5) {\r\n activeTextures.push(this._diffuseTexture5);\r\n }\r\n\r\n if (this._diffuseTexture6) {\r\n activeTextures.push(this._diffuseTexture6);\r\n }\r\n\r\n if (this._diffuseTexture7) {\r\n activeTextures.push(this._diffuseTexture7);\r\n }\r\n\r\n if (this._diffuseTexture8) {\r\n activeTextures.push(this._diffuseTexture8);\r\n }\r\n\r\n return activeTextures;\r\n }\r\n\r\n public override hasTexture(texture: BaseTexture): boolean {\r\n if (super.hasTexture(texture)) {\r\n return true;\r\n }\r\n\r\n // Mix map 1\r\n if (this._mixTexture1 === texture) {\r\n return true;\r\n }\r\n\r\n if (this._diffuseTexture1 === texture) {\r\n return true;\r\n }\r\n\r\n if (this._diffuseTexture2 === texture) {\r\n return true;\r\n }\r\n\r\n if (this._diffuseTexture3 === texture) {\r\n return true;\r\n }\r\n\r\n if (this._diffuseTexture4 === texture) {\r\n return true;\r\n }\r\n\r\n // Mix map 2\r\n if (this._mixTexture2 === texture) {\r\n return true;\r\n }\r\n\r\n if (this._diffuseTexture5 === texture) {\r\n return true;\r\n }\r\n\r\n if (this._diffuseTexture6 === texture) {\r\n return true;\r\n }\r\n\r\n if (this._diffuseTexture7 === texture) {\r\n return true;\r\n }\r\n\r\n if (this._diffuseTexture8 === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public override dispose(forceDisposeEffect?: boolean): void {\r\n if (this._mixTexture1) {\r\n this._mixTexture1.dispose();\r\n }\r\n\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public override clone(name: string): MixMaterial {\r\n return SerializationHelper.Clone(() => new MixMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.MixMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"MixMaterial\";\r\n }\r\n\r\n // Statics\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): MixMaterial {\r\n return SerializationHelper.Parse(() => new MixMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.MixMaterial\", MixMaterial);\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./normalMaterial.js";
|
package/normal/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/materials/src/normal/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC","sourcesContent":["export * from \"./normalMaterial\";\r\n"]}
|