@babylonjs/smart-filters 1.0.13 → 8.19.0
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/dist/blockFoundation/aggregateBlock.d.ts +3 -3
- package/dist/blockFoundation/aggregateBlock.d.ts.map +1 -1
- package/dist/blockFoundation/aggregateBlock.js +1 -2
- package/dist/blockFoundation/aggregateBlock.js.map +1 -1
- package/dist/blockFoundation/baseBlock.d.ts +2 -2
- package/dist/blockFoundation/baseBlock.d.ts.map +1 -1
- package/dist/blockFoundation/baseBlock.js +5 -6
- package/dist/blockFoundation/baseBlock.js.map +1 -1
- package/dist/blockFoundation/customAggregateBlock.d.ts.map +1 -1
- package/dist/blockFoundation/customAggregateBlock.js +2 -2
- package/dist/blockFoundation/customAggregateBlock.js.map +1 -1
- package/dist/blockFoundation/customShaderBlock.d.ts +9 -0
- package/dist/blockFoundation/customShaderBlock.d.ts.map +1 -1
- package/dist/blockFoundation/customShaderBlock.js +47 -7
- package/dist/blockFoundation/customShaderBlock.js.map +1 -1
- package/dist/blockFoundation/disableableShaderBlock.d.ts.map +1 -1
- package/dist/blockFoundation/disableableShaderBlock.js +4 -4
- package/dist/blockFoundation/disableableShaderBlock.js.map +1 -1
- package/dist/blockFoundation/index.js +0 -2
- package/dist/blockFoundation/index.js.map +1 -1
- package/dist/blockFoundation/inputBlock.d.ts +8 -8
- package/dist/blockFoundation/inputBlock.d.ts.map +1 -1
- package/dist/blockFoundation/inputBlock.deserializer.d.ts +1 -1
- package/dist/blockFoundation/inputBlock.deserializer.d.ts.map +1 -1
- package/dist/blockFoundation/inputBlock.deserializer.js +1 -1
- package/dist/blockFoundation/inputBlock.deserializer.js.map +1 -1
- package/dist/blockFoundation/inputBlock.js +7 -7
- package/dist/blockFoundation/inputBlock.js.map +1 -1
- package/dist/blockFoundation/inputBlock.serialization.types.d.ts.map +1 -1
- package/dist/blockFoundation/inputBlock.serializer.d.ts +1 -1
- package/dist/blockFoundation/inputBlock.serializer.js +26 -28
- package/dist/blockFoundation/inputBlock.serializer.js.map +1 -1
- package/dist/blockFoundation/outputBlock.d.ts +4 -9
- package/dist/blockFoundation/outputBlock.d.ts.map +1 -1
- package/dist/blockFoundation/outputBlock.js +13 -14
- package/dist/blockFoundation/outputBlock.js.map +1 -1
- package/dist/blockFoundation/shaderBlock.d.ts +4 -4
- package/dist/blockFoundation/shaderBlock.d.ts.map +1 -1
- package/dist/blockFoundation/shaderBlock.js +13 -19
- package/dist/blockFoundation/shaderBlock.js.map +1 -1
- package/dist/blockFoundation/textureOptions.d.ts +1 -1
- package/dist/blockFoundation/textureOptions.js +1 -1
- package/dist/command/command.d.ts +1 -1
- package/dist/command/command.js +1 -1
- package/dist/command/commandBuffer.d.ts +1 -1
- package/dist/command/commandBuffer.d.ts.map +1 -1
- package/dist/command/commandBuffer.js +2 -2
- package/dist/command/commandBufferDebugger.d.ts +2 -2
- package/dist/command/commandBufferDebugger.d.ts.map +1 -1
- package/dist/command/commandBufferDebugger.js +1 -1
- package/dist/command/commandBufferDebugger.js.map +1 -1
- package/dist/command/index.d.ts +3 -1
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +5 -1
- package/dist/command/index.js.map +1 -1
- package/dist/connection/connectionPoint.d.ts +3 -3
- package/dist/connection/connectionPoint.d.ts.map +1 -1
- package/dist/connection/connectionPoint.js +2 -2
- package/dist/connection/connectionPoint.js.map +1 -1
- package/dist/connection/connectionPointCompatibilityState.d.ts +1 -1
- package/dist/connection/connectionPointCompatibilityState.js +1 -1
- package/dist/connection/connectionPointType.d.ts +3 -3
- package/dist/connection/connectionPointType.d.ts.map +1 -1
- package/dist/connection/connectionPointWithDefault.d.ts +3 -3
- package/dist/connection/connectionPointWithDefault.d.ts.map +1 -1
- package/dist/connection/connectionPointWithDefault.js.map +1 -1
- package/dist/connection/index.d.ts +2 -1
- package/dist/connection/index.d.ts.map +1 -1
- package/dist/connection/index.js +3 -3
- package/dist/connection/index.js.map +1 -1
- package/dist/editorUtils/editableInPropertyPage.d.ts +2 -2
- package/dist/editorUtils/editableInPropertyPage.d.ts.map +1 -1
- package/dist/editorUtils/editableInPropertyPage.js +2 -2
- package/dist/editorUtils/editableInPropertyPage.js.map +1 -1
- package/dist/editorUtils/index.d.ts +1 -0
- package/dist/editorUtils/index.d.ts.map +1 -1
- package/dist/editorUtils/index.js +2 -0
- package/dist/editorUtils/index.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/optimization/dependencyGraph.js.map +1 -1
- package/dist/optimization/optimizedShaderBlock.d.ts +4 -4
- package/dist/optimization/optimizedShaderBlock.d.ts.map +1 -1
- package/dist/optimization/optimizedShaderBlock.js.map +1 -1
- package/dist/optimization/smartFilterOptimizer.d.ts +2 -2
- package/dist/optimization/smartFilterOptimizer.d.ts.map +1 -1
- package/dist/optimization/smartFilterOptimizer.js +34 -57
- package/dist/optimization/smartFilterOptimizer.js.map +1 -1
- package/dist/runtime/index.d.ts +2 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +3 -3
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/renderTargetGenerator.d.ts +1 -1
- package/dist/runtime/renderTargetGenerator.d.ts.map +1 -1
- package/dist/runtime/renderTargetGenerator.js +5 -7
- package/dist/runtime/renderTargetGenerator.js.map +1 -1
- package/dist/runtime/shaderRuntime.d.ts +7 -7
- package/dist/runtime/shaderRuntime.d.ts.map +1 -1
- package/dist/runtime/shaderRuntime.js +7 -8
- package/dist/runtime/shaderRuntime.js.map +1 -1
- package/dist/runtime/smartFilterRuntime.d.ts +3 -3
- package/dist/runtime/smartFilterRuntime.d.ts.map +1 -1
- package/dist/runtime/smartFilterRuntime.js.map +1 -1
- package/dist/runtime/strongRef.d.ts +1 -1
- package/dist/runtime/strongRef.js +1 -1
- package/dist/serialization/importCustomBlockDefinition.d.ts +1 -1
- package/dist/serialization/importCustomBlockDefinition.js +8 -9
- package/dist/serialization/importCustomBlockDefinition.js.map +1 -1
- package/dist/serialization/index.d.ts +1 -0
- package/dist/serialization/index.d.ts.map +1 -1
- package/dist/serialization/index.js +3 -0
- package/dist/serialization/index.js.map +1 -1
- package/dist/serialization/serializedBlockDefinition.d.ts +2 -2
- package/dist/serialization/serializedBlockDefinition.d.ts.map +1 -1
- package/dist/serialization/serializedShaderBlockDefinition.d.ts +1 -1
- package/dist/serialization/serializedShaderBlockDefinition.d.ts.map +1 -1
- package/dist/serialization/serializedSmartFilter.d.ts +1 -1
- package/dist/serialization/serializedSmartFilter.d.ts.map +1 -1
- package/dist/serialization/smartFilterDeserializer.d.ts +6 -6
- package/dist/serialization/smartFilterDeserializer.d.ts.map +1 -1
- package/dist/serialization/smartFilterDeserializer.js +9 -12
- package/dist/serialization/smartFilterDeserializer.js.map +1 -1
- package/dist/serialization/smartFilterSerializer.d.ts +2 -2
- package/dist/serialization/smartFilterSerializer.d.ts.map +1 -1
- package/dist/serialization/smartFilterSerializer.js +10 -13
- package/dist/serialization/smartFilterSerializer.js.map +1 -1
- package/dist/serialization/v1/defaultBlockSerializer.d.ts +2 -2
- package/dist/serialization/v1/defaultBlockSerializer.d.ts.map +1 -1
- package/dist/serialization/v1/defaultBlockSerializer.js +1 -1
- package/dist/serialization/v1/index.d.ts +1 -0
- package/dist/serialization/v1/index.d.ts.map +1 -1
- package/dist/serialization/v1/index.js +2 -0
- package/dist/serialization/v1/index.js.map +1 -1
- package/dist/serialization/v1/shaderBlockSerialization.types.d.ts +3 -3
- package/dist/serialization/v1/shaderBlockSerialization.types.d.ts.map +1 -1
- package/dist/serialization/v1/smartFilterSerialization.types.d.ts +2 -2
- package/dist/serialization/v1/smartFilterSerialization.types.d.ts.map +1 -1
- package/dist/smartFilter.d.ts +8 -8
- package/dist/smartFilter.d.ts.map +1 -1
- package/dist/smartFilter.js +6 -7
- package/dist/smartFilter.js.map +1 -1
- package/dist/utils/buildTools/buildShaders.d.ts +3 -2
- package/dist/utils/buildTools/buildShaders.d.ts.map +1 -1
- package/dist/utils/buildTools/buildShaders.js +7 -6
- package/dist/utils/buildTools/buildShaders.js.map +1 -1
- package/dist/utils/buildTools/convertGlslIntoBlock.d.ts +4 -2
- package/dist/utils/buildTools/convertGlslIntoBlock.d.ts.map +1 -1
- package/dist/utils/buildTools/convertGlslIntoBlock.js +136 -141
- package/dist/utils/buildTools/convertGlslIntoBlock.js.map +1 -1
- package/dist/utils/buildTools/convertGlslIntoShaderProgram.d.ts +4 -4
- package/dist/utils/buildTools/convertGlslIntoShaderProgram.d.ts.map +1 -1
- package/dist/utils/buildTools/convertGlslIntoShaderProgram.js +55 -48
- package/dist/utils/buildTools/convertGlslIntoShaderProgram.js.map +1 -1
- package/dist/utils/buildTools/convertShaders.d.ts +8 -5
- package/dist/utils/buildTools/convertShaders.d.ts.map +1 -1
- package/dist/utils/buildTools/convertShaders.js +38 -14
- package/dist/utils/buildTools/convertShaders.js.map +1 -1
- package/dist/utils/buildTools/shaderConverter.d.ts +4 -4
- package/dist/utils/buildTools/shaderConverter.d.ts.map +1 -1
- package/dist/utils/buildTools/shaderConverter.js +17 -21
- package/dist/utils/buildTools/shaderConverter.js.map +1 -1
- package/dist/utils/buildTools/watchShaders.d.ts +3 -2
- package/dist/utils/buildTools/watchShaders.d.ts.map +1 -1
- package/dist/utils/buildTools/watchShaders.js +10 -8
- package/dist/utils/buildTools/watchShaders.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/renderTargetUtils.d.ts +3 -3
- package/dist/utils/renderTargetUtils.d.ts.map +1 -1
- package/dist/utils/renderTargetUtils.js +4 -4
- package/dist/utils/renderTargetUtils.js.map +1 -1
- package/dist/utils/shaderCodeUtils.d.ts +8 -8
- package/dist/utils/shaderCodeUtils.d.ts.map +1 -1
- package/dist/utils/shaderCodeUtils.js +16 -28
- package/dist/utils/shaderCodeUtils.js.map +1 -1
- package/dist/utils/textureLoaders.d.ts +2 -2
- package/dist/utils/textureLoaders.d.ts.map +1 -1
- package/dist/utils/textureLoaders.js +2 -3
- package/dist/utils/textureLoaders.js.map +1 -1
- package/dist/utils/textureUtils.d.ts +5 -5
- package/dist/utils/textureUtils.d.ts.map +1 -1
- package/dist/utils/textureUtils.js +1 -1
- package/dist/utils/textureUtils.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.js +2 -2
- package/license.md +21 -21
- package/package.json +13 -8
- package/src/blockFoundation/aggregateBlock.ts +148 -151
- package/src/blockFoundation/baseBlock.ts +339 -364
- package/src/blockFoundation/customAggregateBlock.ts +88 -104
- package/src/blockFoundation/customShaderBlock.ts +362 -326
- package/src/blockFoundation/disableableShaderBlock.ts +91 -100
- package/src/blockFoundation/index.ts +9 -9
- package/src/blockFoundation/inputBlock.deserializer.ts +72 -97
- package/src/blockFoundation/inputBlock.serialization.types.ts +126 -132
- package/src/blockFoundation/inputBlock.serializer.ts +150 -150
- package/src/blockFoundation/inputBlock.ts +181 -192
- package/src/blockFoundation/outputBlock.ts +144 -151
- package/src/blockFoundation/shaderBlock.ts +156 -163
- package/src/blockFoundation/textureOptions.ts +57 -57
- package/src/command/command.ts +59 -59
- package/src/command/commandBuffer.ts +71 -71
- package/src/command/commandBufferDebugger.ts +14 -14
- package/src/command/index.ts +7 -3
- package/src/connection/connectionPoint.ts +205 -214
- package/src/connection/connectionPointCompatibilityState.ts +31 -31
- package/src/connection/connectionPointType.ts +45 -45
- package/src/connection/connectionPointWithDefault.ts +27 -35
- package/src/connection/index.ts +8 -9
- package/src/editorUtils/editableInPropertyPage.ts +106 -106
- package/src/editorUtils/index.ts +3 -1
- package/src/index.ts +16 -15
- package/src/optimization/dependencyGraph.ts +96 -96
- package/src/optimization/index.ts +1 -1
- package/src/optimization/optimizedShaderBlock.ts +131 -134
- package/src/optimization/smartFilterOptimizer.ts +757 -825
- package/src/runtime/index.ts +8 -6
- package/src/runtime/renderTargetGenerator.ts +222 -248
- package/src/runtime/shaderRuntime.ts +174 -173
- package/src/runtime/smartFilterRuntime.ts +112 -112
- package/src/runtime/strongRef.ts +18 -18
- package/src/serialization/importCustomBlockDefinition.ts +86 -86
- package/src/serialization/index.ts +10 -7
- package/src/serialization/serializedBlockDefinition.ts +12 -12
- package/src/serialization/serializedShaderBlockDefinition.ts +7 -7
- package/src/serialization/serializedSmartFilter.ts +6 -6
- package/src/serialization/smartFilterDeserializer.ts +190 -220
- package/src/serialization/smartFilterSerializer.ts +110 -121
- package/src/serialization/v1/defaultBlockSerializer.ts +21 -21
- package/src/serialization/v1/index.ts +4 -2
- package/src/serialization/v1/shaderBlockSerialization.types.ts +85 -85
- package/src/serialization/v1/smartFilterSerialization.types.ts +129 -133
- package/src/smartFilter.ts +255 -260
- package/src/utils/buildTools/buildShaders.ts +14 -13
- package/src/utils/buildTools/convertGlslIntoBlock.ts +370 -385
- package/src/utils/buildTools/convertGlslIntoShaderProgram.ts +173 -172
- package/src/utils/buildTools/convertShaders.ts +65 -43
- package/src/utils/buildTools/recordVersionNumber.js +24 -0
- package/src/utils/buildTools/shaderConverter.ts +466 -478
- package/src/utils/buildTools/watchShaders.ts +44 -42
- package/src/utils/index.ts +4 -2
- package/src/utils/renderTargetUtils.ts +30 -35
- package/src/utils/shaderCodeUtils.ts +192 -207
- package/src/utils/textureLoaders.ts +31 -43
- package/src/utils/textureUtils.ts +28 -32
- package/src/version.ts +2 -2
- package/dist/utils/buildTools/determineVersion.d.ts +0 -36
- package/dist/utils/buildTools/determineVersion.d.ts.map +0 -1
- package/dist/utils/buildTools/determineVersion.js +0 -109
- package/dist/utils/buildTools/determineVersion.js.map +0 -1
- package/dist/utils/buildTools/versionUp.d.ts +0 -2
- package/dist/utils/buildTools/versionUp.d.ts.map +0 -1
- package/dist/utils/buildTools/versionUp.js +0 -53
- package/dist/utils/buildTools/versionUp.js.map +0 -1
- package/src/utils/buildTools/determineVersion.ts +0 -128
- package/src/utils/buildTools/versionUp.ts +0 -61
|
@@ -1,385 +1,370 @@
|
|
|
1
|
-
import * as fs from "fs";
|
|
2
|
-
import {
|
|
3
|
-
import { ConnectionPointType } from "../../connection/connectionPointType.js";
|
|
4
|
-
import { BlockDisableStrategy } from "../../blockFoundation/disableableShaderBlock.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
${
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
${
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
*
|
|
132
|
-
* @
|
|
133
|
-
*/
|
|
134
|
-
|
|
135
|
-
${
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
//
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
})
|
|
182
|
-
.filter((param) => param !== null);
|
|
183
|
-
|
|
184
|
-
// Generate the shader binding constructor params
|
|
185
|
-
const shaderBindingCtorParams = fragmentShaderInfo.uniforms
|
|
186
|
-
.map((uniform) => {
|
|
187
|
-
return uniform.properties?.autoBind
|
|
188
|
-
? null
|
|
189
|
-
: ShaderBindingCtorParams.replace(CAMEL_CASE_UNIFORM, uniform.name).replace(
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
.
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
} else
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
// Generate the block get shader
|
|
266
|
-
const
|
|
267
|
-
.map((uniform) => {
|
|
268
|
-
return uniform.properties?.autoBind
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
.replace(
|
|
320
|
-
.replace(
|
|
321
|
-
.replace(
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
switch (type) {
|
|
372
|
-
case ConnectionPointType.Float:
|
|
373
|
-
return "setFloat";
|
|
374
|
-
case ConnectionPointType.Texture:
|
|
375
|
-
return "setTexture";
|
|
376
|
-
case ConnectionPointType.Color3:
|
|
377
|
-
return "setColor3";
|
|
378
|
-
case ConnectionPointType.Color4:
|
|
379
|
-
return "setDirectColor4";
|
|
380
|
-
case ConnectionPointType.Vector2:
|
|
381
|
-
return "setVector2";
|
|
382
|
-
case ConnectionPointType.Boolean:
|
|
383
|
-
return "setBool";
|
|
384
|
-
}
|
|
385
|
-
}
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import { ExtractShaderProgramFromGlsl } from "./convertGlslIntoShaderProgram.js";
|
|
3
|
+
import { ConnectionPointType } from "../../connection/connectionPointType.js";
|
|
4
|
+
import { BlockDisableStrategy } from "../../blockFoundation/disableableShaderBlock.js";
|
|
5
|
+
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
7
|
+
const EXTRA_IMPORTS = "@EXTRA_IMPORTS@";
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
9
|
+
const BABYLON_CORE_PATH = "@BABYLON_CORE_PATH@";
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
11
|
+
const SMART_FILTER_CORE_IMPORT = "@SMART_FILTER_CORE_IMPORT@";
|
|
12
|
+
const SHADER_PROGRAM = "@SHADER_PROGRAM@";
|
|
13
|
+
const BLOCK_NAME = "@BLOCK_NAME@";
|
|
14
|
+
const NAMESPACE = "@NAMESPACE@";
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
16
|
+
const SHADER_BINDING_PRIVATE_VARIABLES = "@SHADER_BINDING_PRIVATE_VARIABLES@";
|
|
17
|
+
const CAMEL_CASE_UNIFORM = "@CAMEL_CASE_UNIFORM@";
|
|
18
|
+
const CONNECTION_POINT_TYPE = "@CONNECTION_POINT_TYPE@";
|
|
19
|
+
const CONNECTION_POINT_DEFAULT_VALUE = "@CONNECTION_POINT_DEFAULT_VALUE@";
|
|
20
|
+
const SHADER_BINDING_EXTENDS = "@SHADER_BINDING_EXTENDS@";
|
|
21
|
+
const SHADER_BINDING_CTOR_DOCSTRING_PARAMS = "@SHADER_BINDING_CTOR_DOCSTRING_PARAMS@";
|
|
22
|
+
const SHADER_BINDING_CTOR_PARAMS = "@SHADER_CTOR_PARAMS@";
|
|
23
|
+
const SHADER_BINDING_SUPER_PARAMS = "@SHADER_BINDING_SUPER_PARAMS@";
|
|
24
|
+
const SHADER_BINDING_CTOR = "@SHADER_BINDING_CTOR@";
|
|
25
|
+
const SHADER_BINDING_BIND = "@SHADER_BINDING_BIND@";
|
|
26
|
+
const SHADER_BLOCK_EXTENDS = "@SHADER_BLOCK_EXTENDS@";
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
28
|
+
const BLOCK_INPUT_PROPERTIES = "@BLOCK_INPUT_PROPERTIES@";
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
30
|
+
const BLOCK_DISABLE_OPTIMIZATION = "@BLOCK_DISABLE_OPTIMIZATION@";
|
|
31
|
+
const BLOCK_DISABLE_STRATEGY = "@BLOCK_DISABLE_STRATEGY@";
|
|
32
|
+
const BLOCK_GET_SHADER_BINDING_VARS = "@BLOCK_SHADER_BINDING_BIND_VARS@";
|
|
33
|
+
const BLOCK_GET_SHADER_PARAM_LIST = "@BLOCK_GET_SHADER_PARAM_LIST@";
|
|
34
|
+
const EFFECT_SETTER = "@EFFECT_SETTER@";
|
|
35
|
+
const EFFECT_VALUE = "@EFFECT_VALUE@";
|
|
36
|
+
const EXTRA_BIND_DOCSTRING = "@EXTRA_BIND_DOCSTRING@";
|
|
37
|
+
const EXTRA_BIND_PARAMS = "@EXTRA_BIND_PARAMS@";
|
|
38
|
+
|
|
39
|
+
const ShaderBindingPrivateVariablesTemplate = ` private readonly _${CAMEL_CASE_UNIFORM}: RuntimeData<ConnectionPointType.${CONNECTION_POINT_TYPE}>;`;
|
|
40
|
+
const ShaderBindingCtorDocstringParams = ` * @param ${CAMEL_CASE_UNIFORM} - The ${CAMEL_CASE_UNIFORM} runtime value`;
|
|
41
|
+
const ShaderBindingCtorParams = ` ${CAMEL_CASE_UNIFORM}: RuntimeData<ConnectionPointType.${CONNECTION_POINT_TYPE}>`;
|
|
42
|
+
const ShaderBindingCtor = ` this._${CAMEL_CASE_UNIFORM} = ${CAMEL_CASE_UNIFORM};`;
|
|
43
|
+
const ShaderBindingBind = ` effect.${EFFECT_SETTER}(this.getRemappedName(Uniforms.${CAMEL_CASE_UNIFORM}), ${EFFECT_VALUE});`;
|
|
44
|
+
const ShaderBindingBindRegularValue = `this._${CAMEL_CASE_UNIFORM}.value`;
|
|
45
|
+
|
|
46
|
+
const BlockInputProperty = ` /**
|
|
47
|
+
* The ${CAMEL_CASE_UNIFORM} connection point.
|
|
48
|
+
*/
|
|
49
|
+
public readonly ${CAMEL_CASE_UNIFORM} = this._registerInput(Uniforms.${CAMEL_CASE_UNIFORM}, ConnectionPointType.${CONNECTION_POINT_TYPE});
|
|
50
|
+
`;
|
|
51
|
+
const BlockInputOptionalProperty = ` /**
|
|
52
|
+
/**
|
|
53
|
+
* The ${CAMEL_CASE_UNIFORM} connection point.
|
|
54
|
+
*/
|
|
55
|
+
public readonly ${CAMEL_CASE_UNIFORM} = this._registerOptionalInput(
|
|
56
|
+
"${CAMEL_CASE_UNIFORM}",
|
|
57
|
+
ConnectionPointType.${CONNECTION_POINT_TYPE},
|
|
58
|
+
createStrongRef(${CONNECTION_POINT_DEFAULT_VALUE})
|
|
59
|
+
);
|
|
60
|
+
`;
|
|
61
|
+
const BlockGetShaderBindingVars = ` const ${CAMEL_CASE_UNIFORM} = this._confirmRuntimeDataSupplied(this.${CAMEL_CASE_UNIFORM});`;
|
|
62
|
+
|
|
63
|
+
const FileTemplate = `/* eslint-disable prettier/prettier */
|
|
64
|
+
// ************************************************************
|
|
65
|
+
// Note: this file is auto-generated, do not modify it directly
|
|
66
|
+
// ************************************************************
|
|
67
|
+
|
|
68
|
+
// It was generated by convertGlslIntoBlock() from
|
|
69
|
+
// an annotated .glsl file. Modify the .glsl file to make changes
|
|
70
|
+
// to the block. This file will get overwritten when the build
|
|
71
|
+
// is run or during a watch when the .glsl file is updated.
|
|
72
|
+
|
|
73
|
+
import type { Effect } from "${BABYLON_CORE_PATH}/Materials/effect.js";
|
|
74
|
+
|
|
75
|
+
import {
|
|
76
|
+
${SHADER_BINDING_EXTENDS},
|
|
77
|
+
type RuntimeData,
|
|
78
|
+
ConnectionPointType,
|
|
79
|
+
type SmartFilter,
|
|
80
|
+
${SHADER_BLOCK_EXTENDS},
|
|
81
|
+
type ShaderProgram,
|
|
82
|
+
${EXTRA_IMPORTS}} from "${SMART_FILTER_CORE_IMPORT}";${SHADER_PROGRAM}
|
|
83
|
+
/**
|
|
84
|
+
* The shader binding for the ${BLOCK_NAME}, used by the runtime
|
|
85
|
+
*/
|
|
86
|
+
class ${BLOCK_NAME}ShaderBinding extends ${SHADER_BINDING_EXTENDS} {
|
|
87
|
+
${SHADER_BINDING_PRIVATE_VARIABLES}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Creates a new shader binding instance for the block.
|
|
91
|
+
${SHADER_BINDING_CTOR_DOCSTRING_PARAMS}
|
|
92
|
+
*/
|
|
93
|
+
constructor(
|
|
94
|
+
${SHADER_BINDING_CTOR_PARAMS}
|
|
95
|
+
) {
|
|
96
|
+
super(${SHADER_BINDING_SUPER_PARAMS});
|
|
97
|
+
${SHADER_BINDING_CTOR}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Binds all the required data to the shader when rendering.
|
|
102
|
+
* @param effect - defines the effect to bind the data to${EXTRA_BIND_DOCSTRING}
|
|
103
|
+
*/
|
|
104
|
+
public override bind(effect: Effect${EXTRA_BIND_PARAMS}): void {
|
|
105
|
+
${SHADER_BINDING_BIND}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* The implementation of the ${BLOCK_NAME}
|
|
111
|
+
*/
|
|
112
|
+
export class ${BLOCK_NAME} extends ${SHADER_BLOCK_EXTENDS} {
|
|
113
|
+
/**
|
|
114
|
+
* The class name of the block.
|
|
115
|
+
*/
|
|
116
|
+
public static override ClassName = "${BLOCK_NAME}";
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* The namespace of the block.
|
|
120
|
+
*/
|
|
121
|
+
public static override Namespace = "${NAMESPACE}";
|
|
122
|
+
|
|
123
|
+
${BLOCK_INPUT_PROPERTIES}
|
|
124
|
+
/**
|
|
125
|
+
* The shader program (vertex and fragment code) to use to render the block
|
|
126
|
+
*/
|
|
127
|
+
public static override ShaderCode = BlockShaderProgram;
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Instantiates a new ${BLOCK_NAME}.
|
|
131
|
+
* @param smartFilter - The smart filter this block belongs to
|
|
132
|
+
* @param name - The friendly name of the block
|
|
133
|
+
*/
|
|
134
|
+
constructor(smartFilter: SmartFilter, name: string) {
|
|
135
|
+
super(smartFilter, name, ${BLOCK_DISABLE_OPTIMIZATION}${BLOCK_DISABLE_STRATEGY});
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Get the class instance that binds all the required data to the shader (effect) when rendering.
|
|
140
|
+
* @returns The class instance that binds the data to the effect
|
|
141
|
+
*/
|
|
142
|
+
public getShaderBinding(): ${SHADER_BINDING_EXTENDS} {
|
|
143
|
+
${BLOCK_GET_SHADER_BINDING_VARS}
|
|
144
|
+
|
|
145
|
+
return new ${BLOCK_NAME}ShaderBinding(${BLOCK_GET_SHADER_PARAM_LIST});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
`;
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Converts a single shader to a .ts file which exports a Smart Filter block
|
|
153
|
+
* @param fragmentShaderPath - The path to the fragment file for the shader
|
|
154
|
+
* @param smartFiltersCorePath - The path to import the Smart Filters core from
|
|
155
|
+
* @param babylonCorePath - The path to import the Babylon core from (optional)
|
|
156
|
+
|
|
157
|
+
*/
|
|
158
|
+
export function ConvertGlslIntoBlock(fragmentShaderPath: string, smartFiltersCorePath: string, babylonCorePath?: string): void {
|
|
159
|
+
const extraImports: string[] = [];
|
|
160
|
+
|
|
161
|
+
const { shaderProgramCode, fragmentShaderInfo } = ExtractShaderProgramFromGlsl(fragmentShaderPath, smartFiltersCorePath, false, false);
|
|
162
|
+
|
|
163
|
+
// Validation
|
|
164
|
+
if (!fragmentShaderInfo.blockType) {
|
|
165
|
+
throw new Error("The glsl file must contain a header comment with a smartFilterBlockType value");
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// Generate shader binding private variables
|
|
169
|
+
const shaderBindingPrivateVariables = fragmentShaderInfo.uniforms
|
|
170
|
+
.map((uniform) => {
|
|
171
|
+
return uniform.properties?.autoBind
|
|
172
|
+
? null
|
|
173
|
+
: ShaderBindingPrivateVariablesTemplate.replace(CAMEL_CASE_UNIFORM, uniform.name).replace(CONNECTION_POINT_TYPE, GetConnectionPointTypeString(uniform.type));
|
|
174
|
+
})
|
|
175
|
+
.filter((line) => line !== null);
|
|
176
|
+
|
|
177
|
+
// Generate the shader binding constructor docstring params
|
|
178
|
+
const shaderBindingCtorDocstringParams = fragmentShaderInfo.uniforms
|
|
179
|
+
.map((uniform) => {
|
|
180
|
+
return uniform.properties?.autoBind ? null : ShaderBindingCtorDocstringParams.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name);
|
|
181
|
+
})
|
|
182
|
+
.filter((param) => param !== null);
|
|
183
|
+
|
|
184
|
+
// Generate the shader binding constructor params
|
|
185
|
+
const shaderBindingCtorParams = fragmentShaderInfo.uniforms
|
|
186
|
+
.map((uniform) => {
|
|
187
|
+
return uniform.properties?.autoBind
|
|
188
|
+
? null
|
|
189
|
+
: ShaderBindingCtorParams.replace(CAMEL_CASE_UNIFORM, uniform.name).replace(CONNECTION_POINT_TYPE, GetConnectionPointTypeString(uniform.type));
|
|
190
|
+
})
|
|
191
|
+
.filter((param) => param !== null);
|
|
192
|
+
|
|
193
|
+
// Generate the shader binding constructor
|
|
194
|
+
const shaderBindingCtor = fragmentShaderInfo.uniforms
|
|
195
|
+
.map((uniform) => {
|
|
196
|
+
return uniform.properties?.autoBind ? null : ShaderBindingCtor.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name);
|
|
197
|
+
})
|
|
198
|
+
.filter((line) => line !== null);
|
|
199
|
+
|
|
200
|
+
// Generate the shader binding bind
|
|
201
|
+
let needWidthHeightParams = false;
|
|
202
|
+
const shaderBindingBind = fragmentShaderInfo.uniforms.map((uniform) => {
|
|
203
|
+
let effectValue: string;
|
|
204
|
+
let effectSetter = GetEffectSetter(uniform.type);
|
|
205
|
+
|
|
206
|
+
switch (uniform.properties?.autoBind) {
|
|
207
|
+
case "outputResolution":
|
|
208
|
+
{
|
|
209
|
+
effectValue = "width, height";
|
|
210
|
+
effectSetter = "setFloat2";
|
|
211
|
+
needWidthHeightParams = true;
|
|
212
|
+
}
|
|
213
|
+
break;
|
|
214
|
+
case "outputAspectRatio":
|
|
215
|
+
{
|
|
216
|
+
effectValue = "width / height, height / width";
|
|
217
|
+
effectSetter = "setFloat2";
|
|
218
|
+
needWidthHeightParams = true;
|
|
219
|
+
}
|
|
220
|
+
break;
|
|
221
|
+
default:
|
|
222
|
+
effectValue = ShaderBindingBindRegularValue;
|
|
223
|
+
}
|
|
224
|
+
return ShaderBindingBind.replace(EFFECT_VALUE, effectValue).replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name).replace(EFFECT_SETTER, effectSetter);
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
// Add extra params to the bind method if needed
|
|
228
|
+
let extraBindParams = "";
|
|
229
|
+
let extraBindDocstring = "";
|
|
230
|
+
if (needWidthHeightParams) {
|
|
231
|
+
extraBindDocstring = `
|
|
232
|
+
* @param width - defines the width of the output
|
|
233
|
+
* @param height - defines the height of the output`;
|
|
234
|
+
extraBindParams = `, width: number, height: number`;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// Generate the block input properties
|
|
238
|
+
const blockInputProperties = fragmentShaderInfo.uniforms
|
|
239
|
+
.map((uniform) => {
|
|
240
|
+
if (uniform.properties?.autoBind) {
|
|
241
|
+
return null;
|
|
242
|
+
} else if (uniform.properties?.default !== undefined) {
|
|
243
|
+
if (extraImports.indexOf(" createStrongRef") === -1) {
|
|
244
|
+
extraImports.push(" createStrongRef");
|
|
245
|
+
}
|
|
246
|
+
return BlockInputOptionalProperty.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name)
|
|
247
|
+
.replace(CONNECTION_POINT_TYPE, GetConnectionPointTypeString(uniform.type))
|
|
248
|
+
.replace(CONNECTION_POINT_DEFAULT_VALUE, uniform.properties.default);
|
|
249
|
+
} else {
|
|
250
|
+
return BlockInputProperty.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name).replace(CONNECTION_POINT_TYPE, GetConnectionPointTypeString(uniform.type));
|
|
251
|
+
}
|
|
252
|
+
})
|
|
253
|
+
.filter((property) => property !== null);
|
|
254
|
+
|
|
255
|
+
// Generate the block get shader binding vars
|
|
256
|
+
const blockGetShaderBindingVars = fragmentShaderInfo.uniforms
|
|
257
|
+
.map((uniform) => {
|
|
258
|
+
return uniform.properties?.autoBind ? null : BlockGetShaderBindingVars.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name);
|
|
259
|
+
})
|
|
260
|
+
.filter((line) => line !== null);
|
|
261
|
+
|
|
262
|
+
// Handle the disable optimization flag
|
|
263
|
+
const disableOptimization = fragmentShaderInfo.disableOptimization === true ? "true" : "false";
|
|
264
|
+
|
|
265
|
+
// Generate the block get shader param list
|
|
266
|
+
const blockGetShaderParamList = fragmentShaderInfo.uniforms
|
|
267
|
+
.map((uniform) => {
|
|
268
|
+
return uniform.properties?.autoBind ? null : uniform.name;
|
|
269
|
+
})
|
|
270
|
+
.filter((param) => param !== null);
|
|
271
|
+
|
|
272
|
+
// Decide if this is a disableable block or not
|
|
273
|
+
let shaderBlockExtends = "ShaderBlock";
|
|
274
|
+
let shaderBindingExtends = "ShaderBinding";
|
|
275
|
+
let blockDisableStrategy = "";
|
|
276
|
+
let shaderBindingSuperParams = "";
|
|
277
|
+
if (fragmentShaderInfo.blockDisableStrategy) {
|
|
278
|
+
shaderBlockExtends = "DisableableShaderBlock";
|
|
279
|
+
shaderBindingExtends = "DisableableShaderBinding";
|
|
280
|
+
blockDisableStrategy = `, BlockDisableStrategy.${BlockDisableStrategy[fragmentShaderInfo.blockDisableStrategy]}`;
|
|
281
|
+
shaderBindingSuperParams = "parentBlock";
|
|
282
|
+
|
|
283
|
+
shaderBindingCtorDocstringParams.unshift(" * @param parentBlock - IDisableableBlock");
|
|
284
|
+
shaderBindingCtorParams.unshift(" parentBlock: IDisableableBlock");
|
|
285
|
+
blockGetShaderParamList.unshift("this");
|
|
286
|
+
|
|
287
|
+
extraImports.push(" type IDisableableBlock");
|
|
288
|
+
extraImports.push(" BlockDisableStrategy");
|
|
289
|
+
|
|
290
|
+
shaderBindingBind.unshift(" super.bind(effect);");
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// Additional validation
|
|
294
|
+
if (fragmentShaderInfo.blockDisableStrategy !== undefined && fragmentShaderInfo.blockDisableStrategy !== BlockDisableStrategy.Manual) {
|
|
295
|
+
if (fragmentShaderInfo.uniforms.findIndex((uniform) => uniform.name === "disabled") !== -1) {
|
|
296
|
+
throw new Error("A block that uses a BlockDisableStrategy other than Manual should not declare its own 'disabled' uniform");
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// Generate final contents
|
|
301
|
+
const finalContents = FileTemplate.replace(SHADER_PROGRAM, shaderProgramCode)
|
|
302
|
+
.replace(EXTRA_IMPORTS, extraImports.join(",\n"))
|
|
303
|
+
.replace(BABYLON_CORE_PATH, babylonCorePath || "@babylonjs/core")
|
|
304
|
+
.replace(SMART_FILTER_CORE_IMPORT, smartFiltersCorePath)
|
|
305
|
+
.replace(new RegExp(BLOCK_NAME, "g"), fragmentShaderInfo.blockType)
|
|
306
|
+
.replace(NAMESPACE, fragmentShaderInfo.namespace || "Other")
|
|
307
|
+
.replace(new RegExp(SHADER_BINDING_EXTENDS, "g"), shaderBindingExtends)
|
|
308
|
+
.replace(SHADER_BINDING_PRIVATE_VARIABLES, shaderBindingPrivateVariables.join("\n"))
|
|
309
|
+
.replace(SHADER_BINDING_CTOR_DOCSTRING_PARAMS, shaderBindingCtorDocstringParams.join("\n"))
|
|
310
|
+
.replace(SHADER_BINDING_CTOR_PARAMS, shaderBindingCtorParams.join(",\n"))
|
|
311
|
+
.replace(SHADER_BINDING_CTOR, shaderBindingCtor.join("\n"))
|
|
312
|
+
.replace(SHADER_BINDING_SUPER_PARAMS, shaderBindingSuperParams)
|
|
313
|
+
.replace(SHADER_BINDING_BIND, shaderBindingBind.join("\n"))
|
|
314
|
+
.replace(EXTRA_BIND_DOCSTRING, extraBindDocstring)
|
|
315
|
+
.replace(EXTRA_BIND_PARAMS, extraBindParams)
|
|
316
|
+
.replace(new RegExp(SHADER_BLOCK_EXTENDS, "g"), shaderBlockExtends)
|
|
317
|
+
.replace(BLOCK_INPUT_PROPERTIES, blockInputProperties.join("\n"))
|
|
318
|
+
.replace(BLOCK_DISABLE_OPTIMIZATION, disableOptimization)
|
|
319
|
+
.replace(BLOCK_DISABLE_STRATEGY, blockDisableStrategy)
|
|
320
|
+
.replace(BLOCK_GET_SHADER_BINDING_VARS, blockGetShaderBindingVars.join("\n"))
|
|
321
|
+
.replace(BLOCK_GET_SHADER_PARAM_LIST, blockGetShaderParamList.join(","));
|
|
322
|
+
|
|
323
|
+
// Write the block class TS file
|
|
324
|
+
const outputFullPathAndFileName = fragmentShaderPath.replace(".glsl", ".ts");
|
|
325
|
+
fs.writeFileSync(outputFullPathAndFileName, finalContents);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Get the string representation of a connection point type
|
|
330
|
+
* @param type - The connection point type
|
|
331
|
+
* @returns - The string representation of the connection point type
|
|
332
|
+
*/
|
|
333
|
+
function GetConnectionPointTypeString(type: ConnectionPointType): string {
|
|
334
|
+
switch (type) {
|
|
335
|
+
case ConnectionPointType.Float:
|
|
336
|
+
return "Float";
|
|
337
|
+
case ConnectionPointType.Texture:
|
|
338
|
+
return "Texture";
|
|
339
|
+
case ConnectionPointType.Color3:
|
|
340
|
+
return "Color3";
|
|
341
|
+
case ConnectionPointType.Color4:
|
|
342
|
+
return "Color4";
|
|
343
|
+
case ConnectionPointType.Vector2:
|
|
344
|
+
return "Vector2";
|
|
345
|
+
case ConnectionPointType.Boolean:
|
|
346
|
+
return "Boolean";
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Get the effect setter for a connection point type
|
|
352
|
+
* @param type - The connection point type
|
|
353
|
+
* @returns - The effect setter for the connection point type
|
|
354
|
+
*/
|
|
355
|
+
function GetEffectSetter(type: ConnectionPointType): string {
|
|
356
|
+
switch (type) {
|
|
357
|
+
case ConnectionPointType.Float:
|
|
358
|
+
return "setFloat";
|
|
359
|
+
case ConnectionPointType.Texture:
|
|
360
|
+
return "setTexture";
|
|
361
|
+
case ConnectionPointType.Color3:
|
|
362
|
+
return "setColor3";
|
|
363
|
+
case ConnectionPointType.Color4:
|
|
364
|
+
return "setDirectColor4";
|
|
365
|
+
case ConnectionPointType.Vector2:
|
|
366
|
+
return "setVector2";
|
|
367
|
+
case ConnectionPointType.Boolean:
|
|
368
|
+
return "setBool";
|
|
369
|
+
}
|
|
370
|
+
}
|