@babylonjs/addons 8.50.0 → 8.50.2
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/atmosphere/Shaders/ShadersInclude/atmosphereFunctions.js +2 -2
- package/atmosphere/Shaders/ShadersInclude/atmosphereFunctions.js.map +1 -1
- package/atmosphere/Shaders/compositeSky.fragment.d.ts +0 -1
- package/atmosphere/Shaders/compositeSky.fragment.js +0 -2
- package/atmosphere/Shaders/compositeSky.fragment.js.map +1 -1
- package/atmosphere/ShadersWGSL/ShadersInclude/atmosphereFunctions.js +108 -1
- package/atmosphere/ShadersWGSL/ShadersInclude/atmosphereFunctions.js.map +1 -1
- package/atmosphere/ShadersWGSL/aerialPerspective.fragment.d.ts +8 -0
- package/atmosphere/ShadersWGSL/aerialPerspective.fragment.js +26 -0
- package/atmosphere/ShadersWGSL/aerialPerspective.fragment.js.map +1 -0
- package/atmosphere/ShadersWGSL/compositeSky.fragment.d.ts +8 -0
- package/atmosphere/ShadersWGSL/compositeSky.fragment.js +74 -0
- package/atmosphere/ShadersWGSL/compositeSky.fragment.js.map +1 -0
- package/atmosphere/ShadersWGSL/skyView.fragment.d.ts +8 -0
- package/atmosphere/ShadersWGSL/skyView.fragment.js +21 -0
- package/atmosphere/ShadersWGSL/skyView.fragment.js.map +1 -0
- package/atmosphere/atmosphere.d.ts +0 -3
- package/atmosphere/atmosphere.js +33 -13
- package/atmosphere/atmosphere.js.map +1 -1
- package/atmosphere/transmittanceLut.js +1 -1
- package/atmosphere/transmittanceLut.js.map +1 -1
- package/package.json +2 -2
package/atmosphere/atmosphere.js
CHANGED
|
@@ -14,11 +14,8 @@ import { TransmittanceLut } from "./transmittanceLut.js";
|
|
|
14
14
|
import { UniformBuffer } from "@babylonjs/core/Materials/uniformBuffer.js";
|
|
15
15
|
import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
|
16
16
|
import "./Shaders/compositeAerialPerspective.fragment.js";
|
|
17
|
-
import "./Shaders/compositeSky.fragment.js";
|
|
18
17
|
import "./Shaders/compositeGlobeAtmosphere.fragment.js";
|
|
19
18
|
import "./Shaders/fullscreenTriangle.vertex.js";
|
|
20
|
-
import "./Shaders/skyView.fragment.js";
|
|
21
|
-
import "./Shaders/aerialPerspective.fragment.js";
|
|
22
19
|
import "./Shaders/ShadersInclude/atmosphereFragmentDeclaration.js";
|
|
23
20
|
import "./Shaders/ShadersInclude/atmosphereFunctions.js";
|
|
24
21
|
import "./Shaders/ShadersInclude/atmosphereUboDeclaration.js";
|
|
@@ -1155,9 +1152,11 @@ export class Atmosphere {
|
|
|
1155
1152
|
* @param samplerNames - The sampler names to use.
|
|
1156
1153
|
* @param uniformBuffers - The uniform buffers to use.
|
|
1157
1154
|
* @param defineNames - Array of define names to prepend with "#define ".
|
|
1155
|
+
* @param useWebGPU - Whether to use WebGPU shaders.
|
|
1156
|
+
* @param extraInitializations - Optional extra initializations callback for loading shaders.
|
|
1158
1157
|
* @returns The effect wrapper.
|
|
1159
1158
|
*/
|
|
1160
|
-
const CreateEffectWrapper = (engine, name, fragmentShader, uniformNames, samplerNames, uniformBuffers, defineNames) => {
|
|
1159
|
+
const CreateEffectWrapper = (engine, name, fragmentShader, uniformNames, samplerNames, uniformBuffers, defineNames, useWebGPU = false, extraInitializations) => {
|
|
1161
1160
|
const defines = defineNames?.map((defineName) => `#define ${defineName}`) ?? [];
|
|
1162
1161
|
return new EffectWrapper({
|
|
1163
1162
|
engine,
|
|
@@ -1170,6 +1169,8 @@ const CreateEffectWrapper = (engine, name, fragmentShader, uniformNames, sampler
|
|
|
1170
1169
|
samplerNames,
|
|
1171
1170
|
defines,
|
|
1172
1171
|
useShaderStore: true,
|
|
1172
|
+
shaderLanguage: useWebGPU ? 1 /* ShaderLanguage.WGSL */ : 0 /* ShaderLanguage.GLSL */,
|
|
1173
|
+
extraInitializations,
|
|
1173
1174
|
});
|
|
1174
1175
|
};
|
|
1175
1176
|
const CreateMultiScatteringEffectWrapper = (engine, uniformBuffer, groundAlbedo) => {
|
|
@@ -1194,7 +1195,7 @@ const CreateMultiScatteringEffectWrapper = (engine, uniformBuffer, groundAlbedo)
|
|
|
1194
1195
|
useShaderStore: true,
|
|
1195
1196
|
shaderLanguage: useWebGPU ? 1 /* ShaderLanguage.WGSL */ : 0 /* ShaderLanguage.GLSL */,
|
|
1196
1197
|
extraInitializations: (_, list) => {
|
|
1197
|
-
list.push(
|
|
1198
|
+
list.push(...(useWebGPU
|
|
1198
1199
|
? [import("./ShadersWGSL/fullscreenTriangle.vertex.js"), import("./ShadersWGSL/multiScattering.fragment.js")]
|
|
1199
1200
|
: [import("./Shaders/fullscreenTriangle.vertex.js"), import("./Shaders/multiScattering.fragment.js")]));
|
|
1200
1201
|
},
|
|
@@ -1250,11 +1251,8 @@ const DrawEffect = (engine, effectRenderer, effectWrapper, renderTarget, drawCal
|
|
|
1250
1251
|
}
|
|
1251
1252
|
const currentDepthFunction = engine.getDepthFunction();
|
|
1252
1253
|
engine.setDepthFunction(depthFunction);
|
|
1253
|
-
// Likewise with the alpha mode, which can affect depth state too.
|
|
1254
1254
|
const currentAlphaMode = engine.getAlphaMode();
|
|
1255
|
-
|
|
1256
|
-
engine.setAlphaMode(alphaMode);
|
|
1257
|
-
}
|
|
1255
|
+
engine.setAlphaMode(alphaMode, true);
|
|
1258
1256
|
const currentCull = engine.depthCullingState.cull;
|
|
1259
1257
|
effectRenderer.setViewport();
|
|
1260
1258
|
effectRenderer.applyEffectWrapper(effectWrapper, depthTest); // Note, stencil is false by default.
|
|
@@ -1265,7 +1263,7 @@ const DrawEffect = (engine, effectRenderer, effectWrapper, renderTarget, drawCal
|
|
|
1265
1263
|
drawCallback(effectRenderer, renderTarget?.renderTarget, effect, engine);
|
|
1266
1264
|
// Restore state (order matters!)
|
|
1267
1265
|
engine.depthCullingState.cull = currentCull;
|
|
1268
|
-
engine.setAlphaMode(currentAlphaMode);
|
|
1266
|
+
engine.setAlphaMode(currentAlphaMode, true);
|
|
1269
1267
|
if (currentDepthWrite !== undefined) {
|
|
1270
1268
|
engine.setDepthWrite(currentDepthWrite);
|
|
1271
1269
|
}
|
|
@@ -1289,6 +1287,8 @@ const DrawEffect = (engine, effectRenderer, effectWrapper, renderTarget, drawCal
|
|
|
1289
1287
|
*/
|
|
1290
1288
|
const CreateSkyCompositorEffectWrapper = (engine, uniformBuffer, isSkyViewLutEnabled, isLinearSpaceComposition, applyApproximateTransmittance) => {
|
|
1291
1289
|
const useUbo = uniformBuffer.useUbo;
|
|
1290
|
+
const useWebGPU = engine.isWebGPU && !EffectWrapper.ForceGLSL;
|
|
1291
|
+
const uboName = useWebGPU ? "atmosphere" : uniformBuffer.name;
|
|
1292
1292
|
const defines = ["POSITION_VEC2", "COMPUTE_WORLD_RAY"];
|
|
1293
1293
|
if (isSkyViewLutEnabled) {
|
|
1294
1294
|
defines.push("USE_SKY_VIEW_LUT");
|
|
@@ -1300,7 +1300,11 @@ const CreateSkyCompositorEffectWrapper = (engine, uniformBuffer, isSkyViewLutEna
|
|
|
1300
1300
|
defines.push("APPLY_TRANSMITTANCE_BLENDING");
|
|
1301
1301
|
}
|
|
1302
1302
|
const textures = isSkyViewLutEnabled ? ["skyViewLut"] : ["transmittanceLut", "multiScatteringLut"];
|
|
1303
|
-
return CreateEffectWrapper(engine, "atmo-skyCompositor", "compositeSky", ["depth", ...(useUbo ? [] : uniformBuffer.getUniformNames())], textures, useUbo ? [
|
|
1303
|
+
return CreateEffectWrapper(engine, "atmo-skyCompositor", "compositeSky", ["depth", ...(useUbo ? [] : uniformBuffer.getUniformNames())], textures, useUbo ? [uboName] : [], defines, useWebGPU, (_, list) => {
|
|
1304
|
+
list.push(...(useWebGPU
|
|
1305
|
+
? [import("./ShadersWGSL/fullscreenTriangle.vertex.js"), import("./ShadersWGSL/compositeSky.fragment.js")]
|
|
1306
|
+
: [import("./Shaders/fullscreenTriangle.vertex.js"), import("./Shaders/compositeSky.fragment.js")]));
|
|
1307
|
+
});
|
|
1304
1308
|
};
|
|
1305
1309
|
/**
|
|
1306
1310
|
* Creates an EffectWrapper for the aerial perspective LUT.
|
|
@@ -1308,7 +1312,15 @@ const CreateSkyCompositorEffectWrapper = (engine, uniformBuffer, isSkyViewLutEna
|
|
|
1308
1312
|
* @param uniformBuffer - The uniform buffer to use.
|
|
1309
1313
|
* @returns The created EffectWrapper.
|
|
1310
1314
|
*/
|
|
1311
|
-
const CreateAerialPerspectiveEffectWrapper = (engine, uniformBuffer) =>
|
|
1315
|
+
const CreateAerialPerspectiveEffectWrapper = (engine, uniformBuffer) => {
|
|
1316
|
+
const useWebGPU = engine.isWebGPU && !EffectWrapper.ForceGLSL;
|
|
1317
|
+
const uboName = useWebGPU ? "atmosphere" : uniformBuffer.name;
|
|
1318
|
+
return CreateEffectWrapper(engine, "atmo-aerialPerspective", "aerialPerspective", ["layerIdx", ...(uniformBuffer.useUbo ? [] : uniformBuffer.getUniformNames())], ["transmittanceLut", "multiScatteringLut"], uniformBuffer.useUbo ? [uboName] : [], ["POSITION_VEC2", "COMPUTE_WORLD_RAY"], useWebGPU, (_, list) => {
|
|
1319
|
+
list.push(...(useWebGPU
|
|
1320
|
+
? [import("./ShadersWGSL/fullscreenTriangle.vertex.js"), import("./ShadersWGSL/aerialPerspective.fragment.js")]
|
|
1321
|
+
: [import("./Shaders/fullscreenTriangle.vertex.js"), import("./Shaders/aerialPerspective.fragment.js")]));
|
|
1322
|
+
});
|
|
1323
|
+
};
|
|
1312
1324
|
/**
|
|
1313
1325
|
* Creates an EffectWrapper for the aerial perspective compositor.
|
|
1314
1326
|
* @param engine - The engine to use.
|
|
@@ -1399,5 +1411,13 @@ const CreateGlobeAtmosphereCompositorEffectWrapper = (engine, uniformBuffer, isS
|
|
|
1399
1411
|
* @param uniformBuffer - The uniform buffer to use.
|
|
1400
1412
|
* @returns The created EffectWrapper.
|
|
1401
1413
|
*/
|
|
1402
|
-
const CreateSkyViewEffectWrapper = (engine, uniformBuffer) =>
|
|
1414
|
+
const CreateSkyViewEffectWrapper = (engine, uniformBuffer) => {
|
|
1415
|
+
const useWebGPU = engine.isWebGPU && !EffectWrapper.ForceGLSL;
|
|
1416
|
+
const uboName = useWebGPU ? "atmosphere" : uniformBuffer.name;
|
|
1417
|
+
return CreateEffectWrapper(engine, "atmo-skyView", "skyView", ["depth", ...(uniformBuffer.useUbo ? [] : uniformBuffer.getUniformNames())], ["transmittanceLut", "multiScatteringLut"], uniformBuffer.useUbo ? [uboName] : [], ["POSITION_VEC2"], useWebGPU, (_, list) => {
|
|
1418
|
+
list.push(...(useWebGPU
|
|
1419
|
+
? [import("./ShadersWGSL/fullscreenTriangle.vertex.js"), import("./ShadersWGSL/skyView.fragment.js")]
|
|
1420
|
+
: [import("./Shaders/fullscreenTriangle.vertex.js"), import("./Shaders/skyView.fragment.js")]));
|
|
1421
|
+
});
|
|
1422
|
+
};
|
|
1403
1423
|
//# sourceMappingURL=atmosphere.js.map
|