@zephyr3d/scene 0.7.0 → 0.7.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/dist/animation/animation.js +4 -15
- package/dist/animation/animation.js.map +1 -1
- package/dist/animation/animationset.js +22 -9
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/animationtrack.js +1 -0
- package/dist/animation/animationtrack.js.map +1 -1
- package/dist/animation/eulerrotationtrack.js +0 -1
- package/dist/animation/eulerrotationtrack.js.map +1 -1
- package/dist/animation/morphtarget.js +7 -1
- package/dist/animation/morphtarget.js.map +1 -1
- package/dist/animation/morphtrack.js +3 -3
- package/dist/animation/morphtrack.js.map +1 -1
- package/dist/animation/proptrack.js +37 -41
- package/dist/animation/proptrack.js.map +1 -1
- package/dist/animation/rotationtrack.js +0 -1
- package/dist/animation/rotationtrack.js.map +1 -1
- package/dist/animation/scaletrack.js +0 -1
- package/dist/animation/scaletrack.js.map +1 -1
- package/dist/animation/skeleton.js +7 -14
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/translationtrack.js +0 -1
- package/dist/animation/translationtrack.js.map +1 -1
- package/dist/app/api.js +13 -4
- package/dist/app/api.js.map +1 -1
- package/dist/app/app.js +13 -1
- package/dist/app/app.js.map +1 -1
- package/dist/app/engine.js +33 -45
- package/dist/app/engine.js.map +1 -1
- package/dist/app/inputmgr.js.map +1 -1
- package/dist/app/runtimescript.js.map +1 -1
- package/dist/app/screen.js +318 -0
- package/dist/app/screen.js.map +1 -0
- package/dist/app/scriptingsystem.js +10 -6
- package/dist/app/scriptingsystem.js.map +1 -1
- package/dist/app/scriptregistry.js +11 -22
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +79 -58
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/builtin.js +5 -5
- package/dist/asset/builtin.js.map +1 -1
- package/dist/asset/loaders/dds/dds.js +6 -2
- package/dist/asset/loaders/dds/dds.js.map +1 -1
- package/dist/asset/loaders/dds/dds_loader.js +1 -1
- package/dist/asset/loaders/dds/dds_loader.js.map +1 -1
- package/dist/asset/loaders/gltf/gltf_loader.js +14 -6
- package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
- package/dist/asset/loaders/gltf/helpers.js +6 -2
- package/dist/asset/loaders/gltf/helpers.js.map +1 -1
- package/dist/asset/loaders/hdr/hdr.js +22 -15
- package/dist/asset/loaders/hdr/hdr.js.map +1 -1
- package/dist/asset/loaders/image/tga_Loader.js +2 -1
- package/dist/asset/loaders/image/tga_Loader.js.map +1 -1
- package/dist/asset/loaders/image/webimage_loader.js.map +1 -1
- package/dist/asset/loaders/loader.js +2 -2
- package/dist/asset/loaders/loader.js.map +1 -1
- package/dist/asset/model.js +2 -2
- package/dist/asset/model.js.map +1 -1
- package/dist/blitter/bilateralblur.js.map +1 -1
- package/dist/blitter/blitter.js +9 -11
- package/dist/blitter/blitter.js.map +1 -1
- package/dist/blitter/box.js +0 -1
- package/dist/blitter/box.js.map +1 -1
- package/dist/blitter/copy.js.map +1 -1
- package/dist/blitter/gaussianblur.js.map +1 -1
- package/dist/camera/base.js +1 -3
- package/dist/camera/base.js.map +1 -1
- package/dist/camera/camera.js +121 -37
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/fps.js +19 -17
- package/dist/camera/fps.js.map +1 -1
- package/dist/camera/orbit.js +45 -43
- package/dist/camera/orbit.js.map +1 -1
- package/dist/camera/orthocamera.js +27 -21
- package/dist/camera/orthocamera.js.map +1 -1
- package/dist/camera/perspectivecamera.js +26 -17
- package/dist/camera/perspectivecamera.js.map +1 -1
- package/dist/index.d.ts +14453 -15609
- package/dist/index.js +17 -11
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/grassmaterial.js.map +1 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +11 -5
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +10 -9
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/albedocolor.js.map +1 -1
- package/dist/material/mixins/foliage.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +7 -0
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +3 -3
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/brdf.js.map +1 -1
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mixins/texture.js +3 -0
- package/dist/material/mixins/texture.js.map +1 -1
- package/dist/material/mixins/vertexcolor.js.map +1 -1
- package/dist/material/particle.js.map +1 -1
- package/dist/material/pbrblueprint.js +180 -22
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/shader/helper.js +36 -53
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/sprite.js +301 -0
- package/dist/material/sprite.js.map +1 -0
- package/dist/material/sprite3d.js +301 -0
- package/dist/material/sprite3d.js.map +1 -0
- package/dist/material/sprite3d_std.js +116 -0
- package/dist/material/sprite3d_std.js.map +1 -0
- package/dist/material/sprite3dblueprint.js +235 -0
- package/dist/material/sprite3dblueprint.js.map +1 -0
- package/dist/material/sprite_std.js +116 -0
- package/dist/material/sprite_std.js.map +1 -0
- package/dist/material/spriteblueprint.js +235 -0
- package/dist/material/spriteblueprint.js.map +1 -0
- package/dist/material/terrain-cm.js +0 -1
- package/dist/material/terrain-cm.js.map +1 -1
- package/dist/material/unlit.js.map +1 -1
- package/dist/material/water.js.map +1 -1
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/fxaa.js.map +1 -1
- package/dist/posteffect/grayscale.js.map +1 -1
- package/dist/posteffect/motionblur.js.map +1 -1
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/ssr.js +7 -5
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/posteffect/tonemap.js.map +1 -1
- package/dist/render/abuffer_oit.js +8 -6
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/clipmap.js +0 -10
- package/dist/render/clipmap.js.map +1 -1
- package/dist/render/cluster_light.js +4 -4
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/cull_visitor.js +15 -17
- package/dist/render/cull_visitor.js.map +1 -1
- package/dist/render/depthpass.js +3 -4
- package/dist/render/depthpass.js.map +1 -1
- package/dist/render/drawable.js +15 -0
- package/dist/render/drawable.js.map +1 -0
- package/dist/render/drawable_mixin.js +8 -4
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +3 -1
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/fft_wavegenerator.js +67 -64
- package/dist/render/fft_wavegenerator.js.map +1 -1
- package/dist/render/fullscreenquad.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +3 -1
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/globalbindgroup_allocator.js +3 -1
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/hzb.js +1 -2
- package/dist/render/hzb.js.map +1 -1
- package/dist/render/lightpass.js +13 -13
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/objectcolorpass.js +4 -7
- package/dist/render/objectcolorpass.js.map +1 -1
- package/dist/render/primitive.js +4 -5
- package/dist/render/primitive.js.map +1 -1
- package/dist/render/render_queue.js +10 -5
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +16 -22
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/renderpass.js +27 -52
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/rendertarget.js +5 -0
- package/dist/render/rendertarget.js.map +1 -0
- package/dist/render/screenrendertarget.js +56 -0
- package/dist/render/screenrendertarget.js.map +1 -0
- package/dist/render/shadowmap_pass.js +4 -5
- package/dist/render/shadowmap_pass.js.map +1 -1
- package/dist/render/sky.js +16 -14
- package/dist/render/sky.js.map +1 -1
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +296 -0
- package/dist/scene/basesprite.js.map +1 -0
- package/dist/scene/batchgroup.js +4 -2
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +9 -10
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/graph_node.js.map +1 -1
- package/dist/scene/light.js +22 -4
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +93 -15
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/octree.js.map +1 -1
- package/dist/scene/particlesys.js +25 -22
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/raycast_visitor.js +0 -16
- package/dist/scene/raycast_visitor.js.map +1 -1
- package/dist/scene/scene.js +7 -4
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +20 -35
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/sprite.js +18 -0
- package/dist/scene/sprite.js.map +1 -0
- package/dist/scene/sprite3d.js +18 -0
- package/dist/scene/sprite3d.js.map +1 -0
- package/dist/scene/terrain-cm/grass.js +5 -4
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/grassmaterial.js +3 -1
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +65 -48
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/water.js +35 -30
- package/dist/scene/water.js.map +1 -1
- package/dist/shaders/atmosphere.js +17 -29
- package/dist/shaders/atmosphere.js.map +1 -1
- package/dist/shaders/fog.js.map +1 -1
- package/dist/shaders/misc.js.map +1 -1
- package/dist/shaders/noise.js.map +1 -1
- package/dist/shaders/pbr.js.map +1 -1
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/ssr.js.map +1 -1
- package/dist/shaders/temporal.js.map +1 -1
- package/dist/shaders/water.js.map +1 -1
- package/dist/shadow/esm.js +1 -1
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/shader.js +3 -1
- package/dist/shadow/shader.js.map +1 -1
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadowmapper.js +6 -18
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/ssm.js.map +1 -1
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/shapes/box.js +9 -3
- package/dist/shapes/box.js.map +1 -1
- package/dist/shapes/cylinder.js +2 -2
- package/dist/shapes/cylinder.js.map +1 -1
- package/dist/shapes/plane.js +2 -2
- package/dist/shapes/plane.js.map +1 -1
- package/dist/shapes/shape.js +2 -1
- package/dist/shapes/shape.js.map +1 -1
- package/dist/shapes/sphere.js +2 -2
- package/dist/shapes/sphere.js.map +1 -1
- package/dist/shapes/tetrahedron.js +5 -6
- package/dist/shapes/tetrahedron.js.map +1 -1
- package/dist/shapes/torus.js +2 -2
- package/dist/shapes/torus.js.map +1 -1
- package/dist/utility/aabbtree.js +1 -1
- package/dist/utility/aabbtree.js.map +1 -1
- package/dist/utility/blueprint/common/constants.js +578 -104
- package/dist/utility/blueprint/common/constants.js.map +1 -1
- package/dist/utility/blueprint/common/math.js +471 -9
- package/dist/utility/blueprint/common/math.js.map +1 -1
- package/dist/utility/blueprint/common.js +1 -1
- package/dist/utility/blueprint/common.js.map +1 -1
- package/dist/utility/blueprint/material/func.js +9 -5
- package/dist/utility/blueprint/material/func.js.map +1 -1
- package/dist/utility/blueprint/material/inputs.js.map +1 -1
- package/dist/utility/blueprint/material/ir.js +288 -80
- package/dist/utility/blueprint/material/ir.js.map +1 -1
- package/dist/utility/blueprint/material/pbr.js +92 -4
- package/dist/utility/blueprint/material/pbr.js.map +1 -1
- package/dist/utility/blueprint/material/texture.js +62 -45
- package/dist/utility/blueprint/material/texture.js.map +1 -1
- package/dist/utility/blueprint/node.js +28 -1
- package/dist/utility/blueprint/node.js.map +1 -1
- package/dist/utility/bounding_volume.js.map +1 -1
- package/dist/utility/debug.js.map +1 -1
- package/dist/utility/draco/decoder.js.map +1 -1
- package/dist/utility/misc.js +1 -1
- package/dist/utility/misc.js.map +1 -1
- package/dist/utility/panorama.js.map +1 -1
- package/dist/utility/pmrem.js.map +1 -1
- package/dist/utility/rendermipmap.js.map +1 -1
- package/dist/utility/serialization/json.js +19 -15
- package/dist/utility/serialization/json.js.map +1 -1
- package/dist/utility/serialization/manager.js +89 -22
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +23 -21
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +4 -3
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +97 -9
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/common.js +102 -28
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +14 -12
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +154 -26
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +71 -100
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/misc.js +3 -2
- package/dist/utility/serialization/scene/misc.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +42 -9
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +7 -5
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +18 -15
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +3 -2
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +164 -0
- package/dist/utility/serialization/scene/sprite.js.map +1 -0
- package/dist/utility/serialization/scene/terrain.js +8 -6
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +11 -9
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/serialization/types.js +6 -0
- package/dist/utility/serialization/types.js.map +1 -0
- package/dist/utility/shprojector.js.map +1 -1
- package/dist/utility/textures/ggxlut.js.map +1 -1
- package/dist/utility/textures/gradientnoise.js.map +1 -1
- package/dist/utility/textures/randomnoise.js.map +1 -1
- package/dist/values.js +14 -14
- package/dist/values.js.map +1 -1
- package/package.json +80 -80
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"water.js","sources":["../../src/shaders/water.ts"],"sourcesContent":["// copy from: https://github.com/codeagent/webgl-ocean/\r\n\r\nimport type {\r\n GPUProgram,\r\n PBGlobalScope,\r\n PBInsideFunctionScope,\r\n PBShaderExp,\r\n ProgramBuilder,\r\n TextureFormat\r\n} from '@zephyr3d/device';\r\nimport type { WaveGenerator } from '../render/wavegenerator';\r\nimport { getDevice } from '../app/api';\r\n\r\nfunction getFragCoord(scope: PBGlobalScope, useComputeShader: boolean) {\r\n return useComputeShader ? scope.$builtins.globalInvocationId.xy : scope.$builtins.fragCoord.xy;\r\n}\r\n\r\n/** @internal */\r\nexport type WaterVertexFunc = (\r\n this: WaterShaderImpl,\r\n scope: PBInsideFunctionScope,\r\n pos: PBShaderExp,\r\n xz: PBShaderExp,\r\n waveGenerator: WaveGenerator\r\n) => void;\r\n\r\n/** @internal */\r\nexport type WaterShadingFunc = (\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n worldNormal: PBShaderExp,\r\n foamFactor: PBShaderExp,\r\n discardable: PBShaderExp,\r\n waveGenerator: WaveGenerator\r\n) => PBShaderExp;\r\n\r\n/** @internal */\r\nexport type WaterSetupUniformFunc = (this: WaterShaderImpl, scope: PBGlobalScope) => void;\r\n\r\n/** @internal */\r\nexport class WaterShaderImpl {\r\n private readonly _vertexFunc: WaterVertexFunc;\r\n private readonly _shadingFunc: WaterShadingFunc;\r\n private readonly _setupUniformsFunc: WaterSetupUniformFunc;\r\n constructor(\r\n setupUniformsFunc: WaterSetupUniformFunc,\r\n vertexFunc: WaterVertexFunc,\r\n shadingFunc: WaterShadingFunc\r\n ) {\r\n this._vertexFunc = vertexFunc;\r\n this._shadingFunc = shadingFunc;\r\n this._setupUniformsFunc = setupUniformsFunc;\r\n }\r\n setupUniforms(scope: PBGlobalScope): void {\r\n this._setupUniformsFunc?.call(this, scope);\r\n }\r\n vertex(scope: PBInsideFunctionScope, pos: PBShaderExp, xz: PBShaderExp, waveGenerator: WaveGenerator) {\r\n this._vertexFunc?.call(this, scope, pos, xz, waveGenerator);\r\n }\r\n getVertexNormal(scope: PBInsideFunctionScope, xz: PBShaderExp, useComputeShader: boolean): PBShaderExp {\r\n const pb = scope.$builder;\r\n pb.func('getVertexNormal', [pb.vec2('xz')], function () {\r\n this.$l.uv0 = pb.div(this.xz, this.sizes.x);\r\n this.$l.uv1 = pb.div(this.xz, this.sizes.y);\r\n this.$l.uv2 = pb.div(this.xz, this.sizes.z);\r\n if (useComputeShader) {\r\n this.$l._sx_sz_dxdx_dzdz0 = pb.textureArraySampleLevel(this.dataTexture, this.uv0, 1, 0);\r\n this.$l._sx_sz_dxdx_dzdz1 = pb.textureArraySampleLevel(this.dataTexture, this.uv1, 3, 0);\r\n this.$l._sx_sz_dxdx_dzdz2 = pb.textureArraySampleLevel(this.dataTexture, this.uv2, 5, 0);\r\n } else {\r\n this.$l._sx_sz_dxdx_dzdz0 = pb.textureSampleLevel(this.sx_sz_dxdx_dzdz0, this.uv0, 0);\r\n this.$l._sx_sz_dxdx_dzdz1 = pb.textureSampleLevel(this.sx_sz_dxdx_dzdz1, this.uv1, 0);\r\n this.$l._sx_sz_dxdx_dzdz2 = pb.textureSampleLevel(this.sx_sz_dxdx_dzdz2, this.uv2, 0);\r\n }\r\n this.$l.sx = pb.add(this._sx_sz_dxdx_dzdz0.x, this._sx_sz_dxdx_dzdz1.x, this._sx_sz_dxdx_dzdz2.x);\r\n this.$l.sz = pb.add(this._sx_sz_dxdx_dzdz0.y, this._sx_sz_dxdx_dzdz1.y, this._sx_sz_dxdx_dzdz2.y);\r\n this.$l.dxdx_dzdz = pb.add(\r\n pb.mul(this._sx_sz_dxdx_dzdz0.zw, this.croppinesses.x),\r\n pb.mul(this._sx_sz_dxdx_dzdz1.zw, this.croppinesses.y),\r\n pb.mul(this._sx_sz_dxdx_dzdz2.zw, this.croppinesses.z)\r\n );\r\n this.$l.slope = pb.vec2(\r\n pb.div(this.sx, pb.add(1.0, this.dxdx_dzdz.x)),\r\n pb.div(this.sz, pb.add(1.0, this.dxdx_dzdz.y))\r\n );\r\n this.$l.normal = pb.normalize(pb.vec3(pb.neg(this.slope.x), 1.0, pb.neg(this.slope.y)));\r\n this.$return(this.normal);\r\n });\r\n return scope.getVertexNormal(xz);\r\n }\r\n shading(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n worldNormal: PBShaderExp,\r\n foamFactor: PBShaderExp,\r\n discardable: PBShaderExp,\r\n waveGenerator: WaveGenerator\r\n ): PBShaderExp {\r\n return this._shadingFunc?.call(\r\n this,\r\n scope,\r\n worldPos,\r\n worldNormal,\r\n foamFactor,\r\n discardable,\r\n waveGenerator\r\n );\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createProgramOcean(waveGenerator: WaveGenerator, shadingImpl: WaterShaderImpl) {\r\n const program = getDevice().buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.position = pb.vec3().attrib('position');\r\n this.$outputs.outPos = pb.vec3();\r\n this.$outputs.outNormal = pb.vec3();\r\n this.$outputs.outXZ = pb.vec2();\r\n this.flip = pb.int().uniform(0);\r\n this.viewProjMatrix = pb.mat4().uniform(0);\r\n this.worldMatrix = pb.mat4().uniform(1);\r\n this.level = pb.float().uniform(0);\r\n shadingImpl.setupUniforms(this);\r\n waveGenerator.setupUniforms(this, 0);\r\n pb.main(function () {\r\n this.$l.xz = pb.mul(this.worldMatrix, pb.vec4(this.$inputs.position, 1)).xy;\r\n /*\r\n this.$l.xz = pb.mul(\r\n pb.add(\r\n this.offset,\r\n pb.mul(pb.mul(this.modelMatrix, pb.vec4(this.$inputs.position, 1)).xy, this.scale)\r\n ),\r\n this.gridScale\r\n );\r\n */\r\n this.$l.outPos = pb.vec3();\r\n this.$l.outNormal = pb.vec3();\r\n waveGenerator.calcVertexPositionAndNormal(\r\n this,\r\n pb.vec3(this.xz.x, this.level, this.xz.y),\r\n this.outPos,\r\n this.outNormal\r\n );\r\n this.$outputs.outPos = this.outPos;\r\n this.$outputs.outNormal = this.outNormal;\r\n this.$outputs.outXZ = this.xz;\r\n this.$builtins.position = pb.mul(this.viewProjMatrix, pb.vec4(this.$outputs.outPos, 1));\r\n this.$if(pb.notEqual(this.flip, 0), function () {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n });\r\n shadingImpl.vertex(this, this.$outputs.outPos, this.$outputs.outXZ, waveGenerator);\r\n });\r\n },\r\n fragment(pb) {\r\n this.$outputs.outColor = pb.vec4();\r\n this.pos = pb.vec3().uniform(0);\r\n this.region = pb.vec4().uniform(0);\r\n shadingImpl.setupUniforms(this);\r\n waveGenerator.setupUniforms(this, 0);\r\n pb.main(function () {\r\n this.$l.discardable = pb.or(\r\n pb.any(pb.lessThan(this.$inputs.outXZ, this.region.xy)),\r\n pb.any(pb.greaterThan(this.$inputs.outXZ, this.region.zw))\r\n );\r\n this.$l.n = waveGenerator.calcFragmentNormalAndFoam(this, this.$inputs.outXZ, this.$inputs.outNormal);\r\n this.$outputs.outColor =\r\n shadingImpl.shading(\r\n this,\r\n this.$inputs.outPos,\r\n this.n.xyz,\r\n this.n.w,\r\n this.discardable,\r\n waveGenerator\r\n ) ?? pb.vec4(pb.add(pb.mul(this.n.xyz, 0.5), pb.vec3(0.5)), 1);\r\n });\r\n }\r\n });\r\n program.name = '@Ocean_Render';\r\n return program;\r\n}\r\n\r\n/** @internal */\r\nexport function createProgramPostFFT2(\r\n useComputeShader = false,\r\n threadGroupSize: number,\r\n targetFormat: TextureFormat = 'rgba32f',\r\n limit?: 4 | 2\r\n) {\r\n function getComputeFunc(\r\n useComputeShader: boolean,\r\n fmt: TextureFormat\r\n ): (this: PBGlobalScope, pb: ProgramBuilder) => void {\r\n return function (this: PBGlobalScope, pb: ProgramBuilder) {\r\n this.N2 = pb.float().uniform(0);\r\n if (useComputeShader) {\r\n this.output =\r\n fmt === 'rgba32f'\r\n ? pb.texStorage2DArray.rgba32float().storage(0)\r\n : pb.texStorage2DArray.rgba16float().storage(0);\r\n this.ifft = pb.tex2DArray().uniform(0);\r\n } else {\r\n if (!limit || limit === 4) {\r\n this.$outputs.dx_hy_dz_dxdz0 = pb.vec4();\r\n this.$outputs.sx_sz_dxdx_dzdz0 = pb.vec4();\r\n this.$outputs.dx_hy_dz_dxdz1 = pb.vec4();\r\n this.$outputs.sx_sz_dxdx_dzdz1 = pb.vec4();\r\n this.ifft0 = pb.tex2D().uniform(0);\r\n this.ifft1 = pb.tex2D().uniform(0);\r\n this.ifft2 = pb.tex2D().uniform(0);\r\n this.ifft3 = pb.tex2D().uniform(0);\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.dx_hy_dz_dxdz2 = pb.vec4();\r\n this.$outputs.sx_sz_dxdx_dzdz2 = pb.vec4();\r\n this.ifft4 = pb.tex2D().uniform(0);\r\n this.ifft5 = pb.tex2D().uniform(0);\r\n }\r\n }\r\n if (pb.getDevice().type === 'webgl') {\r\n this.ifftTexSize = pb.vec2().uniform(0);\r\n }\r\n pb.main(function () {\r\n this.$l.fragPos = getFragCoord(this, useComputeShader);\r\n this.$l.p = pb.float(pb.add(this.fragPos.x, this.fragPos.y));\r\n this.$l.s = pb.sub(pb.mul(pb.sub(1, pb.mod(this.p, 2)), 2), 1);\r\n this.$l.m = pb.mul(this.s, this.N2);\r\n if (pb.getDevice().type === 'webgl') {\r\n this.$l.uv = pb.div(pb.vec2(this.fragPos), this.ifftTexSize);\r\n if (!limit || limit === 4) {\r\n this.$outputs.dx_hy_dz_dxdz0 = pb.mul(pb.textureSampleLevel(this.ifft0, this.uv, 0), this.m);\r\n this.$outputs.sx_sz_dxdx_dzdz0 = pb.mul(pb.textureSampleLevel(this.ifft1, this.uv, 0), this.m);\r\n this.$outputs.dx_hy_dz_dxdz1 = pb.mul(pb.textureSampleLevel(this.ifft2, this.uv, 0), this.m);\r\n this.$outputs.sx_sz_dxdx_dzdz1 = pb.mul(pb.textureSampleLevel(this.ifft3, this.uv, 0), this.m);\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.dx_hy_dz_dxdz2 = pb.mul(pb.textureSampleLevel(this.ifft4, this.uv, 0), this.m);\r\n this.$outputs.sx_sz_dxdx_dzdz2 = pb.mul(pb.textureSampleLevel(this.ifft5, this.uv, 0), this.m);\r\n }\r\n } else if (useComputeShader) {\r\n this.$l.uv = pb.ivec2(this.fragPos);\r\n for (let i = 0; i < 6; i++) {\r\n pb.textureArrayStore(\r\n this.output,\r\n this.$builtins.globalInvocationId.xy,\r\n i,\r\n pb.mul(pb.textureArrayLoad(this.ifft, this.uv, i, 0), this.m)\r\n );\r\n }\r\n } else {\r\n this.$l.uv = pb.ivec2(this.fragPos);\r\n if (!limit || limit === 4) {\r\n this.$outputs.dx_hy_dz_dxdz0 = pb.mul(pb.textureLoad(this.ifft0, this.uv, 0), this.m);\r\n this.$outputs.sx_sz_dxdx_dzdz0 = pb.mul(pb.textureLoad(this.ifft1, this.uv, 0), this.m);\r\n this.$outputs.dx_hy_dz_dxdz1 = pb.mul(pb.textureLoad(this.ifft2, this.uv, 0), this.m);\r\n this.$outputs.sx_sz_dxdx_dzdz1 = pb.mul(pb.textureLoad(this.ifft3, this.uv, 0), this.m);\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.dx_hy_dz_dxdz2 = pb.mul(pb.textureLoad(this.ifft4, this.uv, 0), this.m);\r\n this.$outputs.sx_sz_dxdx_dzdz2 = pb.mul(pb.textureLoad(this.ifft5, this.uv, 0), this.m);\r\n }\r\n }\r\n });\r\n };\r\n }\r\n let program: GPUProgram;\r\n if (useComputeShader) {\r\n program = getDevice().buildComputeProgram({\r\n workgroupSize: [threadGroupSize, threadGroupSize, 1],\r\n compute: getComputeFunc(useComputeShader, targetFormat)\r\n });\r\n } else {\r\n program = getDevice().buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.position = pb.vec3().attrib('position');\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.position, 1);\r\n });\r\n },\r\n fragment: getComputeFunc(useComputeShader, targetFormat)\r\n });\r\n }\r\n program.name = '@Water_PostFFT2';\r\n return program;\r\n}\r\n\r\n/** @internal */\r\nexport function createProgramHk(\r\n useComputeShader = false,\r\n threadGroupSize = 8,\r\n targetFormat: TextureFormat = 'rgba32f',\r\n limit?: 4 | 2\r\n) {\r\n function getComputeFunc(\r\n useComputeShader = false,\r\n fmt: TextureFormat\r\n ): (this: PBGlobalScope, pb: ProgramBuilder) => void {\r\n return function (this: PBGlobalScope, pb: ProgramBuilder) {\r\n if (useComputeShader) {\r\n this.spectrum =\r\n fmt === 'rgba32f'\r\n ? pb.texStorage2DArray.rgba32float().storage(0)\r\n : pb.texStorage2DArray.rgba16float().storage(0);\r\n } else {\r\n if (!limit || limit === 4) {\r\n this.$outputs.spectrum0 = pb.vec4();\r\n this.$outputs.spectrum1 = pb.vec4();\r\n this.$outputs.spectrum2 = pb.vec4();\r\n this.$outputs.spectrum3 = pb.vec4();\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.spectrum4 = pb.vec4();\r\n this.$outputs.spectrum5 = pb.vec4();\r\n }\r\n }\r\n this.resolution = pb.int().uniform(0);\r\n this.sizes = pb.vec4().uniform(0);\r\n this.t = pb.float().uniform(0);\r\n if (useComputeShader) {\r\n this.h0Texture = pb.tex2DArray().uniform(0);\r\n } else {\r\n if (!limit || limit === 4) {\r\n this.h0Texture0 = pb.tex2D().uniform(0);\r\n this.h0Texture1 = pb.tex2D().uniform(0);\r\n }\r\n if (!limit || limit === 2) {\r\n this.h0Texture2 = pb.tex2D().uniform(0);\r\n }\r\n }\r\n if (pb.getDevice().type === 'webgl') {\r\n this.h0TexSize = pb.vec2().uniform(0);\r\n }\r\n this.RATIO = pb.float(0.618033989036);\r\n this.g = pb.float(9.81);\r\n const Complex = pb.defineStruct([pb.float('re'), pb.float('im')], 'Complex');\r\n const Spectrum = pb.defineStruct(\r\n [\r\n Complex('dx'),\r\n Complex('hy'),\r\n Complex('dz'),\r\n Complex('sx'),\r\n Complex('sz'),\r\n Complex('dxdx'),\r\n Complex('dxdz'),\r\n Complex('dzdz')\r\n ],\r\n 'Spectrum'\r\n );\r\n pb.func('add', [Complex('a'), Complex('b')], function () {\r\n this.$return(Complex(pb.add(this.a.re, this.b.re), pb.add(this.a.im, this.b.im)));\r\n });\r\n pb.func('mul', [Complex('a'), Complex('b')], function () {\r\n this.$return(\r\n Complex(\r\n pb.sub(pb.mul(this.a.re, this.b.re), pb.mul(this.a.im, this.b.im)),\r\n pb.add(pb.mul(this.a.re, this.b.im), pb.mul(this.a.im, this.b.re))\r\n )\r\n );\r\n });\r\n pb.func('eix', [pb.float('x')], function () {\r\n this.$return(Complex(pb.cos(this.x), pb.sin(this.x)));\r\n });\r\n pb.func('conj', [Complex('a')], function () {\r\n this.$return(Complex(this.a.re, pb.neg(this.a.im)));\r\n });\r\n pb.func('scale', [Complex('a'), pb.float('v')], function () {\r\n this.$return(Complex(pb.mul(this.a.re, this.v), pb.mul(this.a.im, this.v)));\r\n });\r\n pb.func('negate', [Complex('a')], function () {\r\n this.$return(Complex(pb.neg(this.a.re), pb.neg(this.a.im)));\r\n });\r\n for (let x = 0; x <= 2; x++) {\r\n if (x < 2 && limit === 2) {\r\n continue;\r\n }\r\n if (x === 2 && limit === 4) {\r\n continue;\r\n }\r\n pb.func(`getSpectrum${x}`, [pb.vec2('x'), pb.float('size'), pb.ivec2('fragCoord')], function () {\r\n this.$l.hy = Complex(0, 0);\r\n this.$l.sx = Complex(0, 0);\r\n this.$l.sz = Complex(0, 0);\r\n this.$l.dx = Complex(0, 0);\r\n this.$l.dz = Complex(0, 0);\r\n this.$l.dxdx = Complex(0, 0);\r\n this.$l.dxdz = Complex(0, 0);\r\n this.$l.dzdz = Complex(0, 0);\r\n this.$if(pb.lessThanEqual(this.size, 1e-3), function () {\r\n this.$return(\r\n Spectrum(this.dx, this.hy, this.dz, this.sx, this.sz, this.dxdx, this.dxdz, this.dzdz)\r\n );\r\n });\r\n this.$l.k = pb.mul(this.x, pb.div(Math.PI * 2, this.size));\r\n this.$l.kLen = pb.length(this.k);\r\n this.$if(pb.greaterThan(this.kLen, 1e-6), function () {\r\n this.$l.w = pb.sqrt(pb.mul(this.kLen, this.g));\r\n if (pb.getDevice().type === 'webgl') {\r\n this.$l.h0Texel = pb.textureSampleLevel(\r\n this[`h0Texture${x}`],\r\n pb.div(pb.vec2(this.fragCoord), this.h0TexSize),\r\n 0\r\n );\r\n } else if (useComputeShader) {\r\n this.$l.h0Texel = pb.textureArrayLoad(this.h0Texture, this.fragCoord, x, 0);\r\n } else {\r\n this.$l.h0Texel = pb.textureLoad(this[`h0Texture${x}`], this.fragCoord, 0);\r\n }\r\n this.$l.e = this.eix(pb.mul(this.w, this.t));\r\n this.$l.h0 = Complex(this.h0Texel.x, this.h0Texel.y);\r\n this.$l.h0MinConj = Complex(this.h0Texel.z, this.h0Texel.w);\r\n this.hy = this.add(this.mul(this.h0, this.e), this.mul(this.h0MinConj, this.conj(this.e)));\r\n this.$if(pb.notEqual(this.fragCoord.x, 0), function () {\r\n this.sx = this.mul(Complex(0, this.k.x), this.hy);\r\n this.dx = this.mul(Complex(0, pb.div(pb.neg(this.k.x), this.kLen)), this.hy);\r\n this.dxdx = this.scale(this.hy, pb.div(pb.mul(this.k.x, this.k.x), this.kLen));\r\n });\r\n this.$if(pb.notEqual(this.fragCoord.y, 0), function () {\r\n this.sz = this.mul(Complex(0, this.k.y), this.hy);\r\n this.dz = this.mul(Complex(0, pb.div(pb.neg(this.k.y), this.kLen)), this.hy);\r\n this.dzdz = this.scale(this.hy, pb.div(pb.mul(this.k.y, this.k.y), this.kLen));\r\n this.$if(pb.notEqual(this.fragCoord.x, 0), function () {\r\n this.dxdz = this.scale(this.hy, pb.div(pb.mul(this.k.x, this.k.y), this.kLen));\r\n });\r\n });\r\n });\r\n this.$return(\r\n Spectrum(this.dx, this.hy, this.dz, this.sx, this.sz, this.dxdx, this.dxdz, this.dzdz)\r\n );\r\n });\r\n }\r\n pb.func(\r\n 'compressSpectrum',\r\n [Spectrum('spec'), pb.vec4('part0').out(), pb.vec4('part1').out()],\r\n function () {\r\n this.$l.i = Complex(0, 1);\r\n this.$l.dx_hy = this.add(this.spec.dx, this.mul(this.i, this.spec.hy));\r\n this.$l.dz_dxdz = this.add(this.spec.dz, this.mul(this.i, this.spec.dxdz));\r\n this.$l.sx_sz = this.add(this.spec.sx, this.mul(this.i, this.spec.sz));\r\n this.$l.dxdx_dzdz = this.add(this.spec.dxdx, this.mul(this.i, this.spec.dzdz));\r\n this.part0 = pb.vec4(this.dx_hy.re, this.dx_hy.im, this.dz_dxdz.re, this.dz_dxdz.im);\r\n this.part1 = pb.vec4(this.sx_sz.re, this.sx_sz.im, this.dxdx_dzdz.re, this.dxdx_dzdz.im);\r\n }\r\n );\r\n pb.main(function () {\r\n this.fragXY = pb.ivec2(getFragCoord(this, useComputeShader));\r\n this.$l.x = pb.vec2(pb.sub(this.fragXY, pb.ivec2(pb.div(this.resolution, 2))));\r\n if (useComputeShader || !limit || limit === 4) {\r\n this.$l.s0 = pb.vec4();\r\n this.$l.s1 = pb.vec4();\r\n this.$l.s2 = pb.vec4();\r\n this.$l.s3 = pb.vec4();\r\n this.$l.spec0 = this.getSpectrum0(this.x, this.sizes.x, this.fragXY);\r\n this.$l.spec1 = this.getSpectrum1(this.x, this.sizes.y, this.fragXY);\r\n this.compressSpectrum(this.spec0, this.s0, this.s1);\r\n this.compressSpectrum(this.spec1, this.s2, this.s3);\r\n if (useComputeShader) {\r\n pb.textureArrayStore(this.spectrum, this.$builtins.globalInvocationId.xy, 0, this.s0);\r\n pb.textureArrayStore(this.spectrum, this.$builtins.globalInvocationId.xy, 1, this.s1);\r\n pb.textureArrayStore(this.spectrum, this.$builtins.globalInvocationId.xy, 2, this.s2);\r\n pb.textureArrayStore(this.spectrum, this.$builtins.globalInvocationId.xy, 3, this.s3);\r\n } else {\r\n this.$outputs.spectrum0 = this.s0;\r\n this.$outputs.spectrum1 = this.s1;\r\n this.$outputs.spectrum2 = this.s2;\r\n this.$outputs.spectrum3 = this.s3;\r\n }\r\n }\r\n if (useComputeShader || !limit || limit === 2) {\r\n this.$l.s4 = pb.vec4();\r\n this.$l.s5 = pb.vec4();\r\n this.$l.spec2 = this.getSpectrum2(this.x, this.sizes.z, this.fragXY);\r\n this.compressSpectrum(this.spec2, this.s4, this.s5);\r\n if (useComputeShader) {\r\n pb.textureArrayStore(this.spectrum, this.$builtins.globalInvocationId.xy, 4, this.s4);\r\n pb.textureArrayStore(this.spectrum, this.$builtins.globalInvocationId.xy, 5, this.s5);\r\n } else {\r\n this.$outputs.spectrum4 = this.s4;\r\n this.$outputs.spectrum5 = this.s5;\r\n }\r\n }\r\n });\r\n };\r\n }\r\n let program: GPUProgram;\r\n if (useComputeShader) {\r\n program = getDevice().buildComputeProgram({\r\n workgroupSize: [threadGroupSize, threadGroupSize, 1],\r\n compute: getComputeFunc(useComputeShader, targetFormat)\r\n });\r\n } else {\r\n program = getDevice().buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.position = pb.vec3().attrib('position');\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.position, 1);\r\n });\r\n },\r\n fragment: getComputeFunc(useComputeShader, targetFormat)\r\n });\r\n }\r\n program.name = '@Water_Hk';\r\n return program;\r\n}\r\n\r\n/** @internal */\r\nexport function createProgramH0(\r\n useComputeShader = false,\r\n threadGroupSize = 8,\r\n targetFormat: TextureFormat = 'rgba32f'\r\n) {\r\n function getComputeFunc(\r\n useComputeShader = false,\r\n fmt: TextureFormat\r\n ): (this: PBGlobalScope, pb: ProgramBuilder) => void {\r\n return function (this: PBGlobalScope, pb: ProgramBuilder) {\r\n if (useComputeShader) {\r\n this.spectrum =\r\n fmt === 'rgba32f'\r\n ? pb.texStorage2DArray.rgba32float().storage(0)\r\n : pb.texStorage2DArray.rgba16float().storage(0);\r\n } else {\r\n this.$outputs.spectrum0 = pb.vec4();\r\n this.$outputs.spectrum1 = pb.vec4();\r\n this.$outputs.spectrum2 = pb.vec4();\r\n }\r\n this.noise = pb.tex2D().uniform(0);\r\n this.resolution = pb.int().uniform(0);\r\n this.wind = pb.vec2().uniform(0);\r\n this.alignment = pb.float().uniform(0);\r\n this.g = pb.float(9.81);\r\n this.cascade0 = pb.vec4().uniform(0);\r\n this.cascade1 = pb.vec4().uniform(0);\r\n this.cascade2 = pb.vec4().uniform(0);\r\n pb.func('gauss', [pb.ivec2('fragCoord')], function () {\r\n this.$l.uv = pb.div(pb.vec2(this.fragCoord), pb.float(this.resolution));\r\n this.$l.noise0 = pb.textureSampleLevel(this.noise, this.uv, 0).rg;\r\n this.$l.noise1 = pb.textureSampleLevel(this.noise, pb.neg(this.uv), 0).rg;\r\n this.$l.u0 = pb.mul(this.noise0.x, Math.PI * 2);\r\n this.$l.v0 = pb.sqrt(pb.mul(pb.log(this.noise0.y), -2));\r\n this.$l.u1 = pb.mul(this.noise1.x, Math.PI * 2);\r\n this.$l.v1 = pb.sqrt(pb.mul(pb.log(this.noise1.y), -2));\r\n this.$return(\r\n pb.vec4(\r\n pb.mul(this.v0, pb.cos(this.u0)),\r\n pb.mul(this.v0, pb.sin(this.u0)),\r\n pb.mul(this.v1, pb.cos(this.u1)),\r\n pb.mul(pb.neg(this.v1), pb.sin(this.u1))\r\n )\r\n );\r\n });\r\n pb.func('phillips', [pb.vec2('k'), pb.float('A'), pb.float('minK'), pb.float('maxK')], function () {\r\n this.$l.k2 = pb.dot(this.k, this.k);\r\n this.$if(\r\n pb.or(\r\n pb.lessThanEqual(this.k2, pb.mul(this.minK, this.minK)),\r\n pb.greaterThanEqual(this.k2, pb.mul(this.maxK, this.maxK))\r\n ),\r\n function () {\r\n this.$return(pb.vec4(0));\r\n }\r\n );\r\n this.$l.L = pb.div(pb.dot(this.wind, this.wind), this.g);\r\n this.$l.L2 = pb.mul(this.L, this.L);\r\n this.$l.h0k = pb.mul(\r\n pb.div(pb.div(this.A, this.k2), this.k2),\r\n pb.exp(pb.div(-1, pb.mul(this.k2, this.L2))),\r\n 0.5\r\n );\r\n this.$l.h0mk = this.h0k;\r\n this.$if(pb.greaterThan(this.alignment, 0), function () {\r\n this.h0k = pb.mul(\r\n this.h0k,\r\n pb.pow(pb.max(0, pb.dot(pb.normalize(this.wind), pb.normalize(this.k))), this.alignment)\r\n );\r\n this.h0mk = pb.mul(\r\n this.h0mk,\r\n pb.pow(pb.max(0, pb.dot(pb.normalize(this.wind), pb.normalize(pb.neg(this.k)))), this.alignment)\r\n );\r\n });\r\n this.$return(pb.sqrt(pb.vec4(this.h0k, this.h0k, this.h0mk, this.h0mk)));\r\n });\r\n pb.main(function () {\r\n this.$l.x = pb.vec2(\r\n pb.sub(pb.ivec2(getFragCoord(this, useComputeShader)), pb.ivec2(pb.div(this.resolution, 2)))\r\n );\r\n this.$l.k = pb.mul(pb.vec2(Math.PI * 2), this.x);\r\n this.$l.rnd = this.gauss(pb.ivec2(getFragCoord(this, useComputeShader)));\r\n if (useComputeShader) {\r\n pb.textureArrayStore(\r\n this.spectrum,\r\n this.$builtins.globalInvocationId.xy,\r\n 0,\r\n pb.mul(\r\n this.phillips(\r\n pb.div(this.k, this.cascade0.x),\r\n this.cascade0.y,\r\n this.cascade0.z,\r\n this.cascade0.w\r\n ),\r\n this.rnd\r\n )\r\n );\r\n pb.textureArrayStore(\r\n this.spectrum,\r\n this.$builtins.globalInvocationId.xy,\r\n 1,\r\n pb.mul(\r\n this.phillips(\r\n pb.div(this.k, this.cascade1.x),\r\n this.cascade1.y,\r\n this.cascade1.z,\r\n this.cascade1.w\r\n ),\r\n this.rnd\r\n )\r\n );\r\n pb.textureArrayStore(\r\n this.spectrum,\r\n this.$builtins.globalInvocationId.xy,\r\n 2,\r\n pb.mul(\r\n this.phillips(\r\n pb.div(this.k, this.cascade2.x),\r\n this.cascade2.y,\r\n this.cascade2.z,\r\n this.cascade2.w\r\n ),\r\n this.rnd\r\n )\r\n );\r\n } else {\r\n this.$outputs.spectrum0 = pb.mul(\r\n this.phillips(pb.div(this.k, this.cascade0.x), this.cascade0.y, this.cascade0.z, this.cascade0.w),\r\n this.rnd\r\n );\r\n this.$outputs.spectrum1 = pb.mul(\r\n this.phillips(pb.div(this.k, this.cascade1.x), this.cascade1.y, this.cascade1.z, this.cascade1.w),\r\n this.rnd\r\n );\r\n this.$outputs.spectrum2 = pb.mul(\r\n this.phillips(pb.div(this.k, this.cascade2.x), this.cascade2.y, this.cascade2.z, this.cascade2.w),\r\n this.rnd\r\n );\r\n }\r\n });\r\n };\r\n }\r\n let program: GPUProgram;\r\n if (useComputeShader) {\r\n program = getDevice().buildComputeProgram({\r\n workgroupSize: [threadGroupSize, threadGroupSize, 1],\r\n compute: getComputeFunc(useComputeShader, targetFormat)\r\n });\r\n } else {\r\n program = getDevice().buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.position = pb.vec3().attrib('position');\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.position, 1);\r\n });\r\n },\r\n fragment: getComputeFunc(useComputeShader, targetFormat)\r\n });\r\n }\r\n program.name = '@Water_H0';\r\n return program;\r\n}\r\n\r\n/** @internal */\r\nexport function createProgramFFT2V(\r\n useComputeShader = false,\r\n threadGroupSize: number,\r\n targetFormat: TextureFormat = 'rgba32f',\r\n limit?: 4 | 2\r\n) {\r\n function getComputeFunc(\r\n useComputeShader: boolean,\r\n fmt: TextureFormat\r\n ): (this: PBGlobalScope, pb: ProgramBuilder) => void {\r\n return function (this: PBGlobalScope, pb: ProgramBuilder) {\r\n if (useComputeShader) {\r\n this.spectrum = pb.tex2DArray().sampleType('unfilterable-float').uniform(0);\r\n this.ifft =\r\n fmt === 'rgba32f'\r\n ? pb.texStorage2DArray.rgba32float().storage(0)\r\n : pb.texStorage2DArray.rgba16float().storage(0);\r\n } else {\r\n if (!limit || limit === 4) {\r\n this.$outputs.ifft0 = pb.vec4();\r\n this.$outputs.ifft1 = pb.vec4();\r\n this.$outputs.ifft2 = pb.vec4();\r\n this.$outputs.ifft3 = pb.vec4();\r\n this.spectrum0 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum1 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum2 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum3 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.ifft4 = pb.vec4();\r\n this.$outputs.ifft5 = pb.vec4();\r\n this.spectrum4 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum5 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n }\r\n }\r\n this.butterfly = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n if (pb.getDevice().type === 'webgl') {\r\n this.texSize = pb.vec4().uniform(0);\r\n }\r\n this.phase = pb.int().uniform(0);\r\n const Complex = pb.defineStruct([pb.float('re'), pb.float('im')], 'Complex');\r\n pb.func('add', [Complex('a'), Complex('b')], function () {\r\n this.$return(Complex(pb.add(this.a.re, this.b.re), pb.add(this.a.im, this.b.im)));\r\n });\r\n pb.func('mul', [Complex('a'), Complex('b')], function () {\r\n this.$return(\r\n Complex(\r\n pb.sub(pb.mul(this.a.re, this.b.re), pb.mul(this.a.im, this.b.im)),\r\n pb.add(pb.mul(this.a.re, this.b.im), pb.mul(this.a.im, this.b.re))\r\n )\r\n );\r\n });\r\n pb.func('scale', [Complex('a'), pb.float('v')], function () {\r\n this.$return(Complex(pb.mul(this.a.re, this.v), pb.mul(this.a.im, this.v)));\r\n });\r\n for (let x = 0; x <= 5; x++) {\r\n if (x < 4 && limit === 2) {\r\n continue;\r\n }\r\n if (x > 3 && limit === 4) {\r\n continue;\r\n }\r\n pb.func(`twiddle${x}`, [pb.vec4('texelButt'), pb.int('x')], function () {\r\n if (pb.getDevice().type === 'webgl') {\r\n this.$l.texelA = pb.textureSampleLevel(\r\n this[`spectrum${x}`],\r\n pb.div(pb.vec2(pb.float(this.x), this.texelButt.b), this.texSize.xy),\r\n 0\r\n );\r\n this.$l.texelB = pb.textureSampleLevel(\r\n this[`spectrum${x}`],\r\n pb.div(pb.vec2(pb.float(this.x), this.texelButt.a), this.texSize.xy),\r\n 0\r\n );\r\n } else if (useComputeShader) {\r\n this.$l.texelA = pb.textureArrayLoad(\r\n this.spectrum,\r\n pb.ivec2(this.x, pb.int(this.texelButt.b)),\r\n x,\r\n 0\r\n );\r\n this.$l.texelB = pb.textureArrayLoad(\r\n this.spectrum,\r\n pb.ivec2(this.x, pb.int(this.texelButt.a)),\r\n x,\r\n 0\r\n );\r\n } else {\r\n this.$l.texelA = pb.textureLoad(\r\n this[`spectrum${x}`],\r\n pb.ivec2(this.x, pb.int(this.texelButt.b)),\r\n 0\r\n );\r\n this.$l.texelB = pb.textureLoad(\r\n this[`spectrum${x}`],\r\n pb.ivec2(this.x, pb.int(this.texelButt.a)),\r\n 0\r\n );\r\n }\r\n this.$l.w = Complex(this.texelButt.r, this.texelButt.g);\r\n this.$l.a1 = Complex(this.texelA.x, this.texelA.y);\r\n this.$l.b1 = Complex(this.texelB.x, this.texelB.y);\r\n this.$l.r1 = this.scale(this.add(this.a1, this.mul(this.b1, this.w)), 0.5);\r\n this.$l.a2 = Complex(this.texelA.z, this.texelA.w);\r\n this.$l.b2 = Complex(this.texelB.z, this.texelB.w);\r\n this.$l.r2 = this.scale(this.add(this.a2, this.mul(this.b2, this.w)), 0.5);\r\n this.$return(pb.vec4(this.r1.re, this.r1.im, this.r2.re, this.r2.im));\r\n });\r\n }\r\n pb.main(function () {\r\n this.$l.x = pb.int(getFragCoord(this, useComputeShader).x);\r\n this.$l.y = pb.int(getFragCoord(this, useComputeShader).y);\r\n if (pb.getDevice().type === 'webgl') {\r\n this.$l.texelButt = pb.textureSampleLevel(\r\n this.butterfly,\r\n pb.div(pb.vec2(pb.float(this.phase), pb.float(this.y)), this.texSize.zw),\r\n 0\r\n );\r\n } else {\r\n this.$l.texelButt = pb.textureLoad(this.butterfly, pb.ivec2(this.phase, this.y), 0);\r\n }\r\n if (useComputeShader) {\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 0,\r\n this.twiddle0(this.texelButt, this.x)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 1,\r\n this.twiddle1(this.texelButt, this.x)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 2,\r\n this.twiddle2(this.texelButt, this.x)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 3,\r\n this.twiddle3(this.texelButt, this.x)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 4,\r\n this.twiddle4(this.texelButt, this.x)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 5,\r\n this.twiddle5(this.texelButt, this.x)\r\n );\r\n } else {\r\n if (!limit || limit === 4) {\r\n this.$outputs.ifft0 = this.twiddle0(this.texelButt, this.x);\r\n this.$outputs.ifft1 = this.twiddle1(this.texelButt, this.x);\r\n this.$outputs.ifft2 = this.twiddle2(this.texelButt, this.x);\r\n this.$outputs.ifft3 = this.twiddle3(this.texelButt, this.x);\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.ifft4 = this.twiddle4(this.texelButt, this.x);\r\n this.$outputs.ifft5 = this.twiddle5(this.texelButt, this.x);\r\n }\r\n }\r\n });\r\n };\r\n }\r\n let program: GPUProgram;\r\n if (useComputeShader) {\r\n program = getDevice().buildComputeProgram({\r\n workgroupSize: [threadGroupSize, threadGroupSize, 1],\r\n compute: getComputeFunc(useComputeShader, targetFormat)\r\n });\r\n } else {\r\n program = getDevice().buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.position = pb.vec3().attrib('position');\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.position, 1);\r\n });\r\n },\r\n fragment: getComputeFunc(useComputeShader, targetFormat)\r\n });\r\n }\r\n program.name = '@Water_PreFFT2';\r\n return program;\r\n}\r\n\r\n/** @internal */\r\nexport function createProgramFFT2H(\r\n useComputeShader = false,\r\n threadGroupSize: number,\r\n targetFormat: TextureFormat = 'rgba32f',\r\n limit?: 4 | 2\r\n) {\r\n function getComputeFunc(\r\n useComputeShader: boolean,\r\n fmt: TextureFormat\r\n ): (this: PBGlobalScope, pb: ProgramBuilder) => void {\r\n return function (this: PBGlobalScope, pb: ProgramBuilder) {\r\n if (useComputeShader) {\r\n this.spectrum = pb.tex2DArray().sampleType('unfilterable-float').uniform(0);\r\n this.ifft =\r\n fmt === 'rgba32f'\r\n ? pb.texStorage2DArray.rgba32float().storage(0)\r\n : pb.texStorage2DArray.rgba16float().storage(0);\r\n } else {\r\n if (!limit || limit === 4) {\r\n this.$outputs.ifft0 = pb.vec4();\r\n this.$outputs.ifft1 = pb.vec4();\r\n this.$outputs.ifft2 = pb.vec4();\r\n this.$outputs.ifft3 = pb.vec4();\r\n this.spectrum0 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum1 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum2 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum3 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.ifft4 = pb.vec4();\r\n this.$outputs.ifft5 = pb.vec4();\r\n this.spectrum4 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum5 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n }\r\n }\r\n this.butterfly = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.phase = pb.int().uniform(0);\r\n if (pb.getDevice().type === 'webgl') {\r\n this.texSize = pb.vec4().uniform(0);\r\n }\r\n const Complex = pb.defineStruct([pb.float('re'), pb.float('im')], 'Complex');\r\n pb.func('add', [Complex('a'), Complex('b')], function () {\r\n this.$return(Complex(pb.add(this.a.re, this.b.re), pb.add(this.a.im, this.b.im)));\r\n });\r\n pb.func('mul', [Complex('a'), Complex('b')], function () {\r\n this.$return(\r\n Complex(\r\n pb.sub(pb.mul(this.a.re, this.b.re), pb.mul(this.a.im, this.b.im)),\r\n pb.add(pb.mul(this.a.re, this.b.im), pb.mul(this.a.im, this.b.re))\r\n )\r\n );\r\n });\r\n pb.func('scale', [Complex('a'), pb.float('v')], function () {\r\n this.$return(Complex(pb.mul(this.a.re, this.v), pb.mul(this.a.im, this.v)));\r\n });\r\n for (let x = 0; x <= 5; x++) {\r\n if (x < 4 && limit === 2) {\r\n continue;\r\n }\r\n if (x > 3 && limit === 4) {\r\n continue;\r\n }\r\n pb.func(`twiddle${x}`, [pb.vec4('texelButt'), pb.int('y')], function () {\r\n if (pb.getDevice().type === 'webgl') {\r\n this.$l.texelA = pb.textureSampleLevel(\r\n this[`spectrum${x}`],\r\n pb.div(pb.vec2(this.texelButt.b, pb.float(this.y)), this.texSize.xy),\r\n 0\r\n );\r\n this.$l.texelB = pb.textureSampleLevel(\r\n this[`spectrum${x}`],\r\n pb.div(pb.vec2(this.texelButt.a, pb.float(this.y)), this.texSize.xy),\r\n 0\r\n );\r\n } else if (useComputeShader) {\r\n this.$l.texelA = pb.textureArrayLoad(\r\n this.spectrum,\r\n pb.ivec2(pb.int(this.texelButt.b), this.y),\r\n x,\r\n 0\r\n );\r\n this.$l.texelB = pb.textureArrayLoad(\r\n this.spectrum,\r\n pb.ivec2(pb.int(this.texelButt.a), this.y),\r\n x,\r\n 0\r\n );\r\n } else {\r\n this.$l.texelA = pb.textureLoad(\r\n this[`spectrum${x}`],\r\n pb.ivec2(pb.int(this.texelButt.b), this.y),\r\n 0\r\n );\r\n this.$l.texelB = pb.textureLoad(\r\n this[`spectrum${x}`],\r\n pb.ivec2(pb.int(this.texelButt.a), this.y),\r\n 0\r\n );\r\n }\r\n this.$l.w = Complex(this.texelButt.r, this.texelButt.g);\r\n this.$l.a1 = Complex(this.texelA.x, this.texelA.y);\r\n this.$l.b1 = Complex(this.texelB.x, this.texelB.y);\r\n this.$l.r1 = this.scale(this.add(this.a1, this.mul(this.b1, this.w)), 0.5);\r\n this.$l.a2 = Complex(this.texelA.z, this.texelA.w);\r\n this.$l.b2 = Complex(this.texelB.z, this.texelB.w);\r\n this.$l.r2 = this.scale(this.add(this.a2, this.mul(this.b2, this.w)), 0.5);\r\n this.$return(pb.vec4(this.r1.re, this.r1.im, this.r2.re, this.r2.im));\r\n });\r\n }\r\n pb.main(function () {\r\n this.$l.x = pb.int(getFragCoord(this, useComputeShader).x);\r\n this.$l.y = pb.int(getFragCoord(this, useComputeShader).y);\r\n if (pb.getDevice().type === 'webgl') {\r\n this.$l.texelButt = pb.textureSampleLevel(\r\n this.butterfly,\r\n pb.div(pb.vec2(pb.float(this.phase), pb.float(this.x)), this.texSize.zw),\r\n 0\r\n );\r\n } else {\r\n this.$l.texelButt = pb.textureLoad(this.butterfly, pb.ivec2(this.phase, this.x), 0);\r\n }\r\n if (useComputeShader) {\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 0,\r\n this.twiddle0(this.texelButt, this.y)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 1,\r\n this.twiddle1(this.texelButt, this.y)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 2,\r\n this.twiddle2(this.texelButt, this.y)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 3,\r\n this.twiddle3(this.texelButt, this.y)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 4,\r\n this.twiddle4(this.texelButt, this.y)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 5,\r\n this.twiddle5(this.texelButt, this.y)\r\n );\r\n } else {\r\n if (!limit || limit === 4) {\r\n this.$outputs.ifft0 = this.twiddle0(this.texelButt, this.y);\r\n this.$outputs.ifft1 = this.twiddle1(this.texelButt, this.y);\r\n this.$outputs.ifft2 = this.twiddle2(this.texelButt, this.y);\r\n this.$outputs.ifft3 = this.twiddle3(this.texelButt, this.y);\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.ifft4 = this.twiddle4(this.texelButt, this.y);\r\n this.$outputs.ifft5 = this.twiddle5(this.texelButt, this.y);\r\n }\r\n }\r\n });\r\n };\r\n }\r\n let program: GPUProgram;\r\n if (useComputeShader) {\r\n program = getDevice().buildComputeProgram({\r\n workgroupSize: [threadGroupSize, threadGroupSize, 1],\r\n compute: getComputeFunc(useComputeShader, targetFormat)\r\n });\r\n } else {\r\n program = getDevice().buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.position = pb.vec3().attrib('position');\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.position, 1);\r\n });\r\n },\r\n fragment: getComputeFunc(useComputeShader, targetFormat)\r\n });\r\n }\r\n program.name = '@Water_FFT2H';\r\n return program;\r\n}\r\n"],"names":["getFragCoord","scope","useComputeShader","$builtins","globalInvocationId","xy","fragCoord","WaterShaderImpl","_vertexFunc","_shadingFunc","_setupUniformsFunc","setupUniformsFunc","vertexFunc","shadingFunc","setupUniforms","call","vertex","pos","xz","waveGenerator","getVertexNormal","pb","$builder","func","vec2","$l","uv0","div","sizes","x","uv1","y","uv2","z","_sx_sz_dxdx_dzdz0","textureArraySampleLevel","dataTexture","_sx_sz_dxdx_dzdz1","_sx_sz_dxdx_dzdz2","textureSampleLevel","sx_sz_dxdx_dzdz0","sx_sz_dxdx_dzdz1","sx_sz_dxdx_dzdz2","sx","add","sz","dxdx_dzdz","mul","zw","croppinesses","slope","normal","normalize","vec3","neg","$return","shading","worldPos","worldNormal","foamFactor","discardable","createProgramOcean","shadingImpl","program","getDevice","buildRenderProgram","$inputs","position","attrib","$outputs","outPos","outNormal","outXZ","flip","int","uniform","viewProjMatrix","mat4","worldMatrix","level","float","main","vec4","calcVertexPositionAndNormal","$if","notEqual","fragment","outColor","region","or","any","lessThan","greaterThan","n","calcFragmentNormalAndFoam","xyz","w","name","createProgramPostFFT2","threadGroupSize","targetFormat","limit","getComputeFunc","fmt","N2","output","texStorage2DArray","rgba32float","storage","rgba16float","ifft","tex2DArray","dx_hy_dz_dxdz0","dx_hy_dz_dxdz1","ifft0","tex2D","ifft1","ifft2","ifft3","dx_hy_dz_dxdz2","ifft4","ifft5","type","ifftTexSize","fragPos","p","s","sub","mod","m","uv","ivec2","i","textureArrayStore","textureArrayLoad","textureLoad","buildComputeProgram","workgroupSize","compute","createProgramHk","spectrum","spectrum0","spectrum1","spectrum2","spectrum3","spectrum4","spectrum5","resolution","t","h0Texture","h0Texture0","h0Texture1","h0Texture2","h0TexSize","RATIO","g","Complex","defineStruct","Spectrum","a","re","b","im","cos","sin","v","hy","dx","dz","dxdx","dxdz","dzdz","lessThanEqual","size","k","Math","PI","kLen","length","sqrt","h0Texel","e","eix","h0","h0MinConj","conj","scale","out","dx_hy","spec","dz_dxdz","sx_sz","part0","part1","fragXY","s0","s1","s2","s3","spec0","getSpectrum0","spec1","getSpectrum1","compressSpectrum","s4","s5","spec2","getSpectrum2","createProgramH0","noise","wind","alignment","cascade0","cascade1","cascade2","noise0","rg","noise1","u0","v0","log","u1","v1","k2","dot","minK","greaterThanEqual","maxK","L","L2","h0k","A","exp","h0mk","pow","max","rnd","gauss","phillips","createProgramFFT2V","sampleType","butterfly","texSize","phase","texelA","texelButt","texelB","r","a1","b1","r1","a2","b2","r2","twiddle0","twiddle1","twiddle2","twiddle3","twiddle4","twiddle5","createProgramFFT2H"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"water.js","sources":["../../src/shaders/water.ts"],"sourcesContent":["// copy from: https://github.com/codeagent/webgl-ocean/\r\n\r\nimport type {\r\n GPUProgram,\r\n PBGlobalScope,\r\n PBInsideFunctionScope,\r\n PBShaderExp,\r\n ProgramBuilder,\r\n TextureFormat\r\n} from '@zephyr3d/device';\r\nimport type { WaveGenerator } from '../render/wavegenerator';\r\nimport { getDevice } from '../app/api';\r\n\r\nfunction getFragCoord(scope: PBGlobalScope, useComputeShader: boolean) {\r\n return useComputeShader ? scope.$builtins.globalInvocationId.xy : scope.$builtins.fragCoord.xy;\r\n}\r\n\r\n/** @internal */\r\nexport type WaterVertexFunc = (\r\n this: WaterShaderImpl,\r\n scope: PBInsideFunctionScope,\r\n pos: PBShaderExp,\r\n xz: PBShaderExp,\r\n waveGenerator: WaveGenerator\r\n) => void;\r\n\r\n/** @internal */\r\nexport type WaterShadingFunc = (\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n worldNormal: PBShaderExp,\r\n foamFactor: PBShaderExp,\r\n discardable: PBShaderExp,\r\n waveGenerator: WaveGenerator\r\n) => PBShaderExp;\r\n\r\n/** @internal */\r\nexport type WaterSetupUniformFunc = (this: WaterShaderImpl, scope: PBGlobalScope) => void;\r\n\r\n/** @internal */\r\nexport class WaterShaderImpl {\r\n private readonly _vertexFunc: WaterVertexFunc;\r\n private readonly _shadingFunc: WaterShadingFunc;\r\n private readonly _setupUniformsFunc: WaterSetupUniformFunc;\r\n constructor(\r\n setupUniformsFunc: WaterSetupUniformFunc,\r\n vertexFunc: WaterVertexFunc,\r\n shadingFunc: WaterShadingFunc\r\n ) {\r\n this._vertexFunc = vertexFunc;\r\n this._shadingFunc = shadingFunc;\r\n this._setupUniformsFunc = setupUniformsFunc;\r\n }\r\n setupUniforms(scope: PBGlobalScope) {\r\n this._setupUniformsFunc?.call(this, scope);\r\n }\r\n vertex(scope: PBInsideFunctionScope, pos: PBShaderExp, xz: PBShaderExp, waveGenerator: WaveGenerator) {\r\n this._vertexFunc?.call(this, scope, pos, xz, waveGenerator);\r\n }\r\n getVertexNormal(scope: PBInsideFunctionScope, xz: PBShaderExp, useComputeShader: boolean) {\r\n const pb = scope.$builder;\r\n pb.func('getVertexNormal', [pb.vec2('xz')], function () {\r\n this.$l.uv0 = pb.div(this.xz, this.sizes.x);\r\n this.$l.uv1 = pb.div(this.xz, this.sizes.y);\r\n this.$l.uv2 = pb.div(this.xz, this.sizes.z);\r\n if (useComputeShader) {\r\n this.$l._sx_sz_dxdx_dzdz0 = pb.textureArraySampleLevel(this.dataTexture, this.uv0, 1, 0);\r\n this.$l._sx_sz_dxdx_dzdz1 = pb.textureArraySampleLevel(this.dataTexture, this.uv1, 3, 0);\r\n this.$l._sx_sz_dxdx_dzdz2 = pb.textureArraySampleLevel(this.dataTexture, this.uv2, 5, 0);\r\n } else {\r\n this.$l._sx_sz_dxdx_dzdz0 = pb.textureSampleLevel(this.sx_sz_dxdx_dzdz0, this.uv0, 0);\r\n this.$l._sx_sz_dxdx_dzdz1 = pb.textureSampleLevel(this.sx_sz_dxdx_dzdz1, this.uv1, 0);\r\n this.$l._sx_sz_dxdx_dzdz2 = pb.textureSampleLevel(this.sx_sz_dxdx_dzdz2, this.uv2, 0);\r\n }\r\n this.$l.sx = pb.add(this._sx_sz_dxdx_dzdz0.x, this._sx_sz_dxdx_dzdz1.x, this._sx_sz_dxdx_dzdz2.x);\r\n this.$l.sz = pb.add(this._sx_sz_dxdx_dzdz0.y, this._sx_sz_dxdx_dzdz1.y, this._sx_sz_dxdx_dzdz2.y);\r\n this.$l.dxdx_dzdz = pb.add(\r\n pb.mul(this._sx_sz_dxdx_dzdz0.zw, this.croppinesses.x),\r\n pb.mul(this._sx_sz_dxdx_dzdz1.zw, this.croppinesses.y),\r\n pb.mul(this._sx_sz_dxdx_dzdz2.zw, this.croppinesses.z)\r\n );\r\n this.$l.slope = pb.vec2(\r\n pb.div(this.sx, pb.add(1.0, this.dxdx_dzdz.x)),\r\n pb.div(this.sz, pb.add(1.0, this.dxdx_dzdz.y))\r\n );\r\n this.$l.normal = pb.normalize(pb.vec3(pb.neg(this.slope.x), 1.0, pb.neg(this.slope.y)));\r\n this.$return(this.normal);\r\n });\r\n return scope.getVertexNormal(xz) as PBShaderExp;\r\n }\r\n shading(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n worldNormal: PBShaderExp,\r\n foamFactor: PBShaderExp,\r\n discardable: PBShaderExp,\r\n waveGenerator: WaveGenerator\r\n ) {\r\n return this._shadingFunc?.call(\r\n this,\r\n scope,\r\n worldPos,\r\n worldNormal,\r\n foamFactor,\r\n discardable,\r\n waveGenerator\r\n );\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createProgramOcean(waveGenerator: WaveGenerator, shadingImpl: WaterShaderImpl) {\r\n const program = getDevice().buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.position = pb.vec3().attrib('position');\r\n this.$outputs.outPos = pb.vec3();\r\n this.$outputs.outNormal = pb.vec3();\r\n this.$outputs.outXZ = pb.vec2();\r\n this.flip = pb.int().uniform(0);\r\n this.viewProjMatrix = pb.mat4().uniform(0);\r\n this.worldMatrix = pb.mat4().uniform(1);\r\n this.level = pb.float().uniform(0);\r\n shadingImpl.setupUniforms(this);\r\n waveGenerator.setupUniforms(this, 0);\r\n pb.main(function () {\r\n this.$l.xz = pb.mul(this.worldMatrix, pb.vec4(this.$inputs.position, 1)).xy;\r\n /*\r\n this.$l.xz = pb.mul(\r\n pb.add(\r\n this.offset,\r\n pb.mul(pb.mul(this.modelMatrix, pb.vec4(this.$inputs.position, 1)).xy, this.scale)\r\n ),\r\n this.gridScale\r\n );\r\n */\r\n this.$l.outPos = pb.vec3();\r\n this.$l.outNormal = pb.vec3();\r\n waveGenerator.calcVertexPositionAndNormal(\r\n this,\r\n pb.vec3(this.xz.x, this.level, this.xz.y),\r\n this.outPos,\r\n this.outNormal\r\n );\r\n this.$outputs.outPos = this.outPos;\r\n this.$outputs.outNormal = this.outNormal;\r\n this.$outputs.outXZ = this.xz;\r\n this.$builtins.position = pb.mul(this.viewProjMatrix, pb.vec4(this.$outputs.outPos, 1));\r\n this.$if(pb.notEqual(this.flip, 0), function () {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n });\r\n shadingImpl.vertex(this, this.$outputs.outPos, this.$outputs.outXZ, waveGenerator);\r\n });\r\n },\r\n fragment(pb) {\r\n this.$outputs.outColor = pb.vec4();\r\n this.pos = pb.vec3().uniform(0);\r\n this.region = pb.vec4().uniform(0);\r\n shadingImpl.setupUniforms(this);\r\n waveGenerator.setupUniforms(this, 0);\r\n pb.main(function () {\r\n this.$l.discardable = pb.or(\r\n pb.any(pb.lessThan(this.$inputs.outXZ, this.region.xy)),\r\n pb.any(pb.greaterThan(this.$inputs.outXZ, this.region.zw))\r\n );\r\n this.$l.n = waveGenerator.calcFragmentNormalAndFoam(this, this.$inputs.outXZ, this.$inputs.outNormal);\r\n this.$outputs.outColor =\r\n shadingImpl.shading(\r\n this,\r\n this.$inputs.outPos,\r\n this.n.xyz,\r\n this.n.w,\r\n this.discardable,\r\n waveGenerator\r\n ) ?? pb.vec4(pb.add(pb.mul(this.n.xyz, 0.5), pb.vec3(0.5)), 1);\r\n });\r\n }\r\n })!;\r\n program.name = '@Ocean_Render';\r\n return program;\r\n}\r\n\r\n/** @internal */\r\nexport function createProgramPostFFT2(\r\n useComputeShader = false,\r\n threadGroupSize: number,\r\n targetFormat: TextureFormat = 'rgba32f',\r\n limit?: 4 | 2\r\n) {\r\n function getComputeFunc(useComputeShader: boolean, fmt: TextureFormat) {\r\n return function (this: PBGlobalScope, pb: ProgramBuilder) {\r\n this.N2 = pb.float().uniform(0);\r\n if (useComputeShader) {\r\n this.output =\r\n fmt === 'rgba32f'\r\n ? pb.texStorage2DArray.rgba32float().storage(0)\r\n : pb.texStorage2DArray.rgba16float().storage(0);\r\n this.ifft = pb.tex2DArray().uniform(0);\r\n } else {\r\n if (!limit || limit === 4) {\r\n this.$outputs.dx_hy_dz_dxdz0 = pb.vec4();\r\n this.$outputs.sx_sz_dxdx_dzdz0 = pb.vec4();\r\n this.$outputs.dx_hy_dz_dxdz1 = pb.vec4();\r\n this.$outputs.sx_sz_dxdx_dzdz1 = pb.vec4();\r\n this.ifft0 = pb.tex2D().uniform(0);\r\n this.ifft1 = pb.tex2D().uniform(0);\r\n this.ifft2 = pb.tex2D().uniform(0);\r\n this.ifft3 = pb.tex2D().uniform(0);\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.dx_hy_dz_dxdz2 = pb.vec4();\r\n this.$outputs.sx_sz_dxdx_dzdz2 = pb.vec4();\r\n this.ifft4 = pb.tex2D().uniform(0);\r\n this.ifft5 = pb.tex2D().uniform(0);\r\n }\r\n }\r\n if (pb.getDevice().type === 'webgl') {\r\n this.ifftTexSize = pb.vec2().uniform(0);\r\n }\r\n pb.main(function () {\r\n this.$l.fragPos = getFragCoord(this, useComputeShader);\r\n this.$l.p = pb.float(pb.add(this.fragPos.x, this.fragPos.y));\r\n this.$l.s = pb.sub(pb.mul(pb.sub(1, pb.mod(this.p, 2)), 2), 1);\r\n this.$l.m = pb.mul(this.s, this.N2);\r\n if (pb.getDevice().type === 'webgl') {\r\n this.$l.uv = pb.div(pb.vec2(this.fragPos), this.ifftTexSize);\r\n if (!limit || limit === 4) {\r\n this.$outputs.dx_hy_dz_dxdz0 = pb.mul(pb.textureSampleLevel(this.ifft0, this.uv, 0), this.m);\r\n this.$outputs.sx_sz_dxdx_dzdz0 = pb.mul(pb.textureSampleLevel(this.ifft1, this.uv, 0), this.m);\r\n this.$outputs.dx_hy_dz_dxdz1 = pb.mul(pb.textureSampleLevel(this.ifft2, this.uv, 0), this.m);\r\n this.$outputs.sx_sz_dxdx_dzdz1 = pb.mul(pb.textureSampleLevel(this.ifft3, this.uv, 0), this.m);\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.dx_hy_dz_dxdz2 = pb.mul(pb.textureSampleLevel(this.ifft4, this.uv, 0), this.m);\r\n this.$outputs.sx_sz_dxdx_dzdz2 = pb.mul(pb.textureSampleLevel(this.ifft5, this.uv, 0), this.m);\r\n }\r\n } else if (useComputeShader) {\r\n this.$l.uv = pb.ivec2(this.fragPos);\r\n for (let i = 0; i < 6; i++) {\r\n pb.textureArrayStore(\r\n this.output,\r\n this.$builtins.globalInvocationId.xy,\r\n i,\r\n pb.mul(pb.textureArrayLoad(this.ifft, this.uv, i, 0), this.m)\r\n );\r\n }\r\n } else {\r\n this.$l.uv = pb.ivec2(this.fragPos);\r\n if (!limit || limit === 4) {\r\n this.$outputs.dx_hy_dz_dxdz0 = pb.mul(pb.textureLoad(this.ifft0, this.uv, 0), this.m);\r\n this.$outputs.sx_sz_dxdx_dzdz0 = pb.mul(pb.textureLoad(this.ifft1, this.uv, 0), this.m);\r\n this.$outputs.dx_hy_dz_dxdz1 = pb.mul(pb.textureLoad(this.ifft2, this.uv, 0), this.m);\r\n this.$outputs.sx_sz_dxdx_dzdz1 = pb.mul(pb.textureLoad(this.ifft3, this.uv, 0), this.m);\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.dx_hy_dz_dxdz2 = pb.mul(pb.textureLoad(this.ifft4, this.uv, 0), this.m);\r\n this.$outputs.sx_sz_dxdx_dzdz2 = pb.mul(pb.textureLoad(this.ifft5, this.uv, 0), this.m);\r\n }\r\n }\r\n });\r\n };\r\n }\r\n let program: GPUProgram;\r\n if (useComputeShader) {\r\n program = getDevice().buildComputeProgram({\r\n workgroupSize: [threadGroupSize, threadGroupSize, 1],\r\n compute: getComputeFunc(useComputeShader, targetFormat)\r\n })!;\r\n } else {\r\n program = getDevice().buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.position = pb.vec3().attrib('position');\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.position, 1);\r\n });\r\n },\r\n fragment: getComputeFunc(useComputeShader, targetFormat)\r\n })!;\r\n }\r\n program.name = '@Water_PostFFT2';\r\n return program;\r\n}\r\n\r\n/** @internal */\r\nexport function createProgramHk(\r\n useComputeShader = false,\r\n threadGroupSize = 8,\r\n targetFormat: TextureFormat = 'rgba32f',\r\n limit?: 4 | 2\r\n) {\r\n function getComputeFunc(useComputeShader = false, fmt: TextureFormat) {\r\n return function (this: PBGlobalScope, pb: ProgramBuilder) {\r\n if (useComputeShader) {\r\n this.spectrum =\r\n fmt === 'rgba32f'\r\n ? pb.texStorage2DArray.rgba32float().storage(0)\r\n : pb.texStorage2DArray.rgba16float().storage(0);\r\n } else {\r\n if (!limit || limit === 4) {\r\n this.$outputs.spectrum0 = pb.vec4();\r\n this.$outputs.spectrum1 = pb.vec4();\r\n this.$outputs.spectrum2 = pb.vec4();\r\n this.$outputs.spectrum3 = pb.vec4();\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.spectrum4 = pb.vec4();\r\n this.$outputs.spectrum5 = pb.vec4();\r\n }\r\n }\r\n this.resolution = pb.int().uniform(0);\r\n this.sizes = pb.vec4().uniform(0);\r\n this.t = pb.float().uniform(0);\r\n if (useComputeShader) {\r\n this.h0Texture = pb.tex2DArray().uniform(0);\r\n } else {\r\n if (!limit || limit === 4) {\r\n this.h0Texture0 = pb.tex2D().uniform(0);\r\n this.h0Texture1 = pb.tex2D().uniform(0);\r\n }\r\n if (!limit || limit === 2) {\r\n this.h0Texture2 = pb.tex2D().uniform(0);\r\n }\r\n }\r\n if (pb.getDevice().type === 'webgl') {\r\n this.h0TexSize = pb.vec2().uniform(0);\r\n }\r\n this.RATIO = pb.float(0.618033989036);\r\n this.g = pb.float(9.81);\r\n const Complex = pb.defineStruct([pb.float('re'), pb.float('im')], 'Complex');\r\n const Spectrum = pb.defineStruct(\r\n [\r\n Complex('dx'),\r\n Complex('hy'),\r\n Complex('dz'),\r\n Complex('sx'),\r\n Complex('sz'),\r\n Complex('dxdx'),\r\n Complex('dxdz'),\r\n Complex('dzdz')\r\n ],\r\n 'Spectrum'\r\n );\r\n pb.func('add', [Complex('a'), Complex('b')], function () {\r\n this.$return(Complex(pb.add(this.a.re, this.b.re), pb.add(this.a.im, this.b.im)));\r\n });\r\n pb.func('mul', [Complex('a'), Complex('b')], function () {\r\n this.$return(\r\n Complex(\r\n pb.sub(pb.mul(this.a.re, this.b.re), pb.mul(this.a.im, this.b.im)),\r\n pb.add(pb.mul(this.a.re, this.b.im), pb.mul(this.a.im, this.b.re))\r\n )\r\n );\r\n });\r\n pb.func('eix', [pb.float('x')], function () {\r\n this.$return(Complex(pb.cos(this.x), pb.sin(this.x)));\r\n });\r\n pb.func('conj', [Complex('a')], function () {\r\n this.$return(Complex(this.a.re, pb.neg(this.a.im)));\r\n });\r\n pb.func('scale', [Complex('a'), pb.float('v')], function () {\r\n this.$return(Complex(pb.mul(this.a.re, this.v), pb.mul(this.a.im, this.v)));\r\n });\r\n pb.func('negate', [Complex('a')], function () {\r\n this.$return(Complex(pb.neg(this.a.re), pb.neg(this.a.im)));\r\n });\r\n for (let x = 0; x <= 2; x++) {\r\n if (x < 2 && limit === 2) {\r\n continue;\r\n }\r\n if (x === 2 && limit === 4) {\r\n continue;\r\n }\r\n pb.func(`getSpectrum${x}`, [pb.vec2('x'), pb.float('size'), pb.ivec2('fragCoord')], function () {\r\n this.$l.hy = Complex(0, 0);\r\n this.$l.sx = Complex(0, 0);\r\n this.$l.sz = Complex(0, 0);\r\n this.$l.dx = Complex(0, 0);\r\n this.$l.dz = Complex(0, 0);\r\n this.$l.dxdx = Complex(0, 0);\r\n this.$l.dxdz = Complex(0, 0);\r\n this.$l.dzdz = Complex(0, 0);\r\n this.$if(pb.lessThanEqual(this.size, 1e-3), function () {\r\n this.$return(\r\n Spectrum(this.dx, this.hy, this.dz, this.sx, this.sz, this.dxdx, this.dxdz, this.dzdz)\r\n );\r\n });\r\n this.$l.k = pb.mul(this.x, pb.div(Math.PI * 2, this.size));\r\n this.$l.kLen = pb.length(this.k);\r\n this.$if(pb.greaterThan(this.kLen, 1e-6), function () {\r\n this.$l.w = pb.sqrt(pb.mul(this.kLen, this.g));\r\n if (pb.getDevice().type === 'webgl') {\r\n this.$l.h0Texel = pb.textureSampleLevel(\r\n this[`h0Texture${x}`],\r\n pb.div(pb.vec2(this.fragCoord), this.h0TexSize),\r\n 0\r\n );\r\n } else if (useComputeShader) {\r\n this.$l.h0Texel = pb.textureArrayLoad(this.h0Texture, this.fragCoord, x, 0);\r\n } else {\r\n this.$l.h0Texel = pb.textureLoad(this[`h0Texture${x}`], this.fragCoord, 0);\r\n }\r\n this.$l.e = this.eix(pb.mul(this.w, this.t));\r\n this.$l.h0 = Complex(this.h0Texel.x, this.h0Texel.y);\r\n this.$l.h0MinConj = Complex(this.h0Texel.z, this.h0Texel.w);\r\n this.hy = this.add(this.mul(this.h0, this.e), this.mul(this.h0MinConj, this.conj(this.e)));\r\n this.$if(pb.notEqual(this.fragCoord.x, 0), function () {\r\n this.sx = this.mul(Complex(0, this.k.x), this.hy);\r\n this.dx = this.mul(Complex(0, pb.div(pb.neg(this.k.x), this.kLen)), this.hy);\r\n this.dxdx = this.scale(this.hy, pb.div(pb.mul(this.k.x, this.k.x), this.kLen));\r\n });\r\n this.$if(pb.notEqual(this.fragCoord.y, 0), function () {\r\n this.sz = this.mul(Complex(0, this.k.y), this.hy);\r\n this.dz = this.mul(Complex(0, pb.div(pb.neg(this.k.y), this.kLen)), this.hy);\r\n this.dzdz = this.scale(this.hy, pb.div(pb.mul(this.k.y, this.k.y), this.kLen));\r\n this.$if(pb.notEqual(this.fragCoord.x, 0), function () {\r\n this.dxdz = this.scale(this.hy, pb.div(pb.mul(this.k.x, this.k.y), this.kLen));\r\n });\r\n });\r\n });\r\n this.$return(\r\n Spectrum(this.dx, this.hy, this.dz, this.sx, this.sz, this.dxdx, this.dxdz, this.dzdz)\r\n );\r\n });\r\n }\r\n pb.func(\r\n 'compressSpectrum',\r\n [Spectrum('spec'), pb.vec4('part0').out(), pb.vec4('part1').out()],\r\n function () {\r\n this.$l.i = Complex(0, 1);\r\n this.$l.dx_hy = this.add(this.spec.dx, this.mul(this.i, this.spec.hy));\r\n this.$l.dz_dxdz = this.add(this.spec.dz, this.mul(this.i, this.spec.dxdz));\r\n this.$l.sx_sz = this.add(this.spec.sx, this.mul(this.i, this.spec.sz));\r\n this.$l.dxdx_dzdz = this.add(this.spec.dxdx, this.mul(this.i, this.spec.dzdz));\r\n this.part0 = pb.vec4(this.dx_hy.re, this.dx_hy.im, this.dz_dxdz.re, this.dz_dxdz.im);\r\n this.part1 = pb.vec4(this.sx_sz.re, this.sx_sz.im, this.dxdx_dzdz.re, this.dxdx_dzdz.im);\r\n }\r\n );\r\n pb.main(function () {\r\n this.fragXY = pb.ivec2(getFragCoord(this, useComputeShader));\r\n this.$l.x = pb.vec2(pb.sub(this.fragXY, pb.ivec2(pb.div(this.resolution, 2))));\r\n if (useComputeShader || !limit || limit === 4) {\r\n this.$l.s0 = pb.vec4();\r\n this.$l.s1 = pb.vec4();\r\n this.$l.s2 = pb.vec4();\r\n this.$l.s3 = pb.vec4();\r\n this.$l.spec0 = this.getSpectrum0(this.x, this.sizes.x, this.fragXY);\r\n this.$l.spec1 = this.getSpectrum1(this.x, this.sizes.y, this.fragXY);\r\n this.compressSpectrum(this.spec0, this.s0, this.s1);\r\n this.compressSpectrum(this.spec1, this.s2, this.s3);\r\n if (useComputeShader) {\r\n pb.textureArrayStore(this.spectrum, this.$builtins.globalInvocationId.xy, 0, this.s0);\r\n pb.textureArrayStore(this.spectrum, this.$builtins.globalInvocationId.xy, 1, this.s1);\r\n pb.textureArrayStore(this.spectrum, this.$builtins.globalInvocationId.xy, 2, this.s2);\r\n pb.textureArrayStore(this.spectrum, this.$builtins.globalInvocationId.xy, 3, this.s3);\r\n } else {\r\n this.$outputs.spectrum0 = this.s0;\r\n this.$outputs.spectrum1 = this.s1;\r\n this.$outputs.spectrum2 = this.s2;\r\n this.$outputs.spectrum3 = this.s3;\r\n }\r\n }\r\n if (useComputeShader || !limit || limit === 2) {\r\n this.$l.s4 = pb.vec4();\r\n this.$l.s5 = pb.vec4();\r\n this.$l.spec2 = this.getSpectrum2(this.x, this.sizes.z, this.fragXY);\r\n this.compressSpectrum(this.spec2, this.s4, this.s5);\r\n if (useComputeShader) {\r\n pb.textureArrayStore(this.spectrum, this.$builtins.globalInvocationId.xy, 4, this.s4);\r\n pb.textureArrayStore(this.spectrum, this.$builtins.globalInvocationId.xy, 5, this.s5);\r\n } else {\r\n this.$outputs.spectrum4 = this.s4;\r\n this.$outputs.spectrum5 = this.s5;\r\n }\r\n }\r\n });\r\n };\r\n }\r\n let program: GPUProgram;\r\n if (useComputeShader) {\r\n program = getDevice().buildComputeProgram({\r\n workgroupSize: [threadGroupSize, threadGroupSize, 1],\r\n compute: getComputeFunc(useComputeShader, targetFormat)\r\n })!;\r\n } else {\r\n program = getDevice().buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.position = pb.vec3().attrib('position');\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.position, 1);\r\n });\r\n },\r\n fragment: getComputeFunc(useComputeShader, targetFormat)\r\n })!;\r\n }\r\n program.name = '@Water_Hk';\r\n return program;\r\n}\r\n\r\n/** @internal */\r\nexport function createProgramH0(\r\n useComputeShader = false,\r\n threadGroupSize = 8,\r\n targetFormat: TextureFormat = 'rgba32f'\r\n) {\r\n function getComputeFunc(useComputeShader = false, fmt: TextureFormat) {\r\n return function (this: PBGlobalScope, pb: ProgramBuilder) {\r\n if (useComputeShader) {\r\n this.spectrum =\r\n fmt === 'rgba32f'\r\n ? pb.texStorage2DArray.rgba32float().storage(0)\r\n : pb.texStorage2DArray.rgba16float().storage(0);\r\n } else {\r\n this.$outputs.spectrum0 = pb.vec4();\r\n this.$outputs.spectrum1 = pb.vec4();\r\n this.$outputs.spectrum2 = pb.vec4();\r\n }\r\n this.noise = pb.tex2D().uniform(0);\r\n this.resolution = pb.int().uniform(0);\r\n this.wind = pb.vec2().uniform(0);\r\n this.alignment = pb.float().uniform(0);\r\n this.g = pb.float(9.81);\r\n this.cascade0 = pb.vec4().uniform(0);\r\n this.cascade1 = pb.vec4().uniform(0);\r\n this.cascade2 = pb.vec4().uniform(0);\r\n pb.func('gauss', [pb.ivec2('fragCoord')], function () {\r\n this.$l.uv = pb.div(pb.vec2(this.fragCoord), pb.float(this.resolution));\r\n this.$l.noise0 = pb.textureSampleLevel(this.noise, this.uv, 0).rg;\r\n this.$l.noise1 = pb.textureSampleLevel(this.noise, pb.neg(this.uv), 0).rg;\r\n this.$l.u0 = pb.mul(this.noise0.x, Math.PI * 2);\r\n this.$l.v0 = pb.sqrt(pb.mul(pb.log(this.noise0.y), -2));\r\n this.$l.u1 = pb.mul(this.noise1.x, Math.PI * 2);\r\n this.$l.v1 = pb.sqrt(pb.mul(pb.log(this.noise1.y), -2));\r\n this.$return(\r\n pb.vec4(\r\n pb.mul(this.v0, pb.cos(this.u0)),\r\n pb.mul(this.v0, pb.sin(this.u0)),\r\n pb.mul(this.v1, pb.cos(this.u1)),\r\n pb.mul(pb.neg(this.v1), pb.sin(this.u1))\r\n )\r\n );\r\n });\r\n pb.func('phillips', [pb.vec2('k'), pb.float('A'), pb.float('minK'), pb.float('maxK')], function () {\r\n this.$l.k2 = pb.dot(this.k, this.k);\r\n this.$if(\r\n pb.or(\r\n pb.lessThanEqual(this.k2, pb.mul(this.minK, this.minK)),\r\n pb.greaterThanEqual(this.k2, pb.mul(this.maxK, this.maxK))\r\n ),\r\n function () {\r\n this.$return(pb.vec4(0));\r\n }\r\n );\r\n this.$l.L = pb.div(pb.dot(this.wind, this.wind), this.g);\r\n this.$l.L2 = pb.mul(this.L, this.L);\r\n this.$l.h0k = pb.mul(\r\n pb.div(pb.div(this.A, this.k2), this.k2),\r\n pb.exp(pb.div(-1, pb.mul(this.k2, this.L2))),\r\n 0.5\r\n );\r\n this.$l.h0mk = this.h0k;\r\n this.$if(pb.greaterThan(this.alignment, 0), function () {\r\n this.h0k = pb.mul(\r\n this.h0k,\r\n pb.pow(pb.max(0, pb.dot(pb.normalize(this.wind), pb.normalize(this.k))), this.alignment)\r\n );\r\n this.h0mk = pb.mul(\r\n this.h0mk,\r\n pb.pow(pb.max(0, pb.dot(pb.normalize(this.wind), pb.normalize(pb.neg(this.k)))), this.alignment)\r\n );\r\n });\r\n this.$return(pb.sqrt(pb.vec4(this.h0k, this.h0k, this.h0mk, this.h0mk)));\r\n });\r\n pb.main(function () {\r\n this.$l.x = pb.vec2(\r\n pb.sub(pb.ivec2(getFragCoord(this, useComputeShader)), pb.ivec2(pb.div(this.resolution, 2)))\r\n );\r\n this.$l.k = pb.mul(pb.vec2(Math.PI * 2), this.x);\r\n this.$l.rnd = this.gauss(pb.ivec2(getFragCoord(this, useComputeShader)));\r\n if (useComputeShader) {\r\n pb.textureArrayStore(\r\n this.spectrum,\r\n this.$builtins.globalInvocationId.xy,\r\n 0,\r\n pb.mul(\r\n this.phillips(\r\n pb.div(this.k, this.cascade0.x),\r\n this.cascade0.y,\r\n this.cascade0.z,\r\n this.cascade0.w\r\n ),\r\n this.rnd\r\n )\r\n );\r\n pb.textureArrayStore(\r\n this.spectrum,\r\n this.$builtins.globalInvocationId.xy,\r\n 1,\r\n pb.mul(\r\n this.phillips(\r\n pb.div(this.k, this.cascade1.x),\r\n this.cascade1.y,\r\n this.cascade1.z,\r\n this.cascade1.w\r\n ),\r\n this.rnd\r\n )\r\n );\r\n pb.textureArrayStore(\r\n this.spectrum,\r\n this.$builtins.globalInvocationId.xy,\r\n 2,\r\n pb.mul(\r\n this.phillips(\r\n pb.div(this.k, this.cascade2.x),\r\n this.cascade2.y,\r\n this.cascade2.z,\r\n this.cascade2.w\r\n ),\r\n this.rnd\r\n )\r\n );\r\n } else {\r\n this.$outputs.spectrum0 = pb.mul(\r\n this.phillips(pb.div(this.k, this.cascade0.x), this.cascade0.y, this.cascade0.z, this.cascade0.w),\r\n this.rnd\r\n );\r\n this.$outputs.spectrum1 = pb.mul(\r\n this.phillips(pb.div(this.k, this.cascade1.x), this.cascade1.y, this.cascade1.z, this.cascade1.w),\r\n this.rnd\r\n );\r\n this.$outputs.spectrum2 = pb.mul(\r\n this.phillips(pb.div(this.k, this.cascade2.x), this.cascade2.y, this.cascade2.z, this.cascade2.w),\r\n this.rnd\r\n );\r\n }\r\n });\r\n };\r\n }\r\n let program: GPUProgram;\r\n if (useComputeShader) {\r\n program = getDevice().buildComputeProgram({\r\n workgroupSize: [threadGroupSize, threadGroupSize, 1],\r\n compute: getComputeFunc(useComputeShader, targetFormat)\r\n })!;\r\n } else {\r\n program = getDevice().buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.position = pb.vec3().attrib('position');\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.position, 1);\r\n });\r\n },\r\n fragment: getComputeFunc(useComputeShader, targetFormat)\r\n })!;\r\n }\r\n program.name = '@Water_H0';\r\n return program;\r\n}\r\n\r\n/** @internal */\r\nexport function createProgramFFT2V(\r\n useComputeShader = false,\r\n threadGroupSize: number,\r\n targetFormat: TextureFormat = 'rgba32f',\r\n limit?: 4 | 2\r\n) {\r\n function getComputeFunc(useComputeShader: boolean, fmt: TextureFormat) {\r\n return function (this: PBGlobalScope, pb: ProgramBuilder) {\r\n if (useComputeShader) {\r\n this.spectrum = pb.tex2DArray().sampleType('unfilterable-float').uniform(0);\r\n this.ifft =\r\n fmt === 'rgba32f'\r\n ? pb.texStorage2DArray.rgba32float().storage(0)\r\n : pb.texStorage2DArray.rgba16float().storage(0);\r\n } else {\r\n if (!limit || limit === 4) {\r\n this.$outputs.ifft0 = pb.vec4();\r\n this.$outputs.ifft1 = pb.vec4();\r\n this.$outputs.ifft2 = pb.vec4();\r\n this.$outputs.ifft3 = pb.vec4();\r\n this.spectrum0 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum1 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum2 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum3 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.ifft4 = pb.vec4();\r\n this.$outputs.ifft5 = pb.vec4();\r\n this.spectrum4 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum5 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n }\r\n }\r\n this.butterfly = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n if (pb.getDevice().type === 'webgl') {\r\n this.texSize = pb.vec4().uniform(0);\r\n }\r\n this.phase = pb.int().uniform(0);\r\n const Complex = pb.defineStruct([pb.float('re'), pb.float('im')], 'Complex');\r\n pb.func('add', [Complex('a'), Complex('b')], function () {\r\n this.$return(Complex(pb.add(this.a.re, this.b.re), pb.add(this.a.im, this.b.im)));\r\n });\r\n pb.func('mul', [Complex('a'), Complex('b')], function () {\r\n this.$return(\r\n Complex(\r\n pb.sub(pb.mul(this.a.re, this.b.re), pb.mul(this.a.im, this.b.im)),\r\n pb.add(pb.mul(this.a.re, this.b.im), pb.mul(this.a.im, this.b.re))\r\n )\r\n );\r\n });\r\n pb.func('scale', [Complex('a'), pb.float('v')], function () {\r\n this.$return(Complex(pb.mul(this.a.re, this.v), pb.mul(this.a.im, this.v)));\r\n });\r\n for (let x = 0; x <= 5; x++) {\r\n if (x < 4 && limit === 2) {\r\n continue;\r\n }\r\n if (x > 3 && limit === 4) {\r\n continue;\r\n }\r\n pb.func(`twiddle${x}`, [pb.vec4('texelButt'), pb.int('x')], function () {\r\n if (pb.getDevice().type === 'webgl') {\r\n this.$l.texelA = pb.textureSampleLevel(\r\n this[`spectrum${x}`],\r\n pb.div(pb.vec2(pb.float(this.x), this.texelButt.b), this.texSize.xy),\r\n 0\r\n );\r\n this.$l.texelB = pb.textureSampleLevel(\r\n this[`spectrum${x}`],\r\n pb.div(pb.vec2(pb.float(this.x), this.texelButt.a), this.texSize.xy),\r\n 0\r\n );\r\n } else if (useComputeShader) {\r\n this.$l.texelA = pb.textureArrayLoad(\r\n this.spectrum,\r\n pb.ivec2(this.x, pb.int(this.texelButt.b)),\r\n x,\r\n 0\r\n );\r\n this.$l.texelB = pb.textureArrayLoad(\r\n this.spectrum,\r\n pb.ivec2(this.x, pb.int(this.texelButt.a)),\r\n x,\r\n 0\r\n );\r\n } else {\r\n this.$l.texelA = pb.textureLoad(\r\n this[`spectrum${x}`],\r\n pb.ivec2(this.x, pb.int(this.texelButt.b)),\r\n 0\r\n );\r\n this.$l.texelB = pb.textureLoad(\r\n this[`spectrum${x}`],\r\n pb.ivec2(this.x, pb.int(this.texelButt.a)),\r\n 0\r\n );\r\n }\r\n this.$l.w = Complex(this.texelButt.r, this.texelButt.g);\r\n this.$l.a1 = Complex(this.texelA.x, this.texelA.y);\r\n this.$l.b1 = Complex(this.texelB.x, this.texelB.y);\r\n this.$l.r1 = this.scale(this.add(this.a1, this.mul(this.b1, this.w)), 0.5);\r\n this.$l.a2 = Complex(this.texelA.z, this.texelA.w);\r\n this.$l.b2 = Complex(this.texelB.z, this.texelB.w);\r\n this.$l.r2 = this.scale(this.add(this.a2, this.mul(this.b2, this.w)), 0.5);\r\n this.$return(pb.vec4(this.r1.re, this.r1.im, this.r2.re, this.r2.im));\r\n });\r\n }\r\n pb.main(function () {\r\n this.$l.x = pb.int(getFragCoord(this, useComputeShader).x);\r\n this.$l.y = pb.int(getFragCoord(this, useComputeShader).y);\r\n if (pb.getDevice().type === 'webgl') {\r\n this.$l.texelButt = pb.textureSampleLevel(\r\n this.butterfly,\r\n pb.div(pb.vec2(pb.float(this.phase), pb.float(this.y)), this.texSize.zw),\r\n 0\r\n );\r\n } else {\r\n this.$l.texelButt = pb.textureLoad(this.butterfly, pb.ivec2(this.phase, this.y), 0);\r\n }\r\n if (useComputeShader) {\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 0,\r\n this.twiddle0(this.texelButt, this.x)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 1,\r\n this.twiddle1(this.texelButt, this.x)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 2,\r\n this.twiddle2(this.texelButt, this.x)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 3,\r\n this.twiddle3(this.texelButt, this.x)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 4,\r\n this.twiddle4(this.texelButt, this.x)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 5,\r\n this.twiddle5(this.texelButt, this.x)\r\n );\r\n } else {\r\n if (!limit || limit === 4) {\r\n this.$outputs.ifft0 = this.twiddle0(this.texelButt, this.x);\r\n this.$outputs.ifft1 = this.twiddle1(this.texelButt, this.x);\r\n this.$outputs.ifft2 = this.twiddle2(this.texelButt, this.x);\r\n this.$outputs.ifft3 = this.twiddle3(this.texelButt, this.x);\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.ifft4 = this.twiddle4(this.texelButt, this.x);\r\n this.$outputs.ifft5 = this.twiddle5(this.texelButt, this.x);\r\n }\r\n }\r\n });\r\n };\r\n }\r\n let program: GPUProgram;\r\n if (useComputeShader) {\r\n program = getDevice().buildComputeProgram({\r\n workgroupSize: [threadGroupSize, threadGroupSize, 1],\r\n compute: getComputeFunc(useComputeShader, targetFormat)\r\n })!;\r\n } else {\r\n program = getDevice().buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.position = pb.vec3().attrib('position');\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.position, 1);\r\n });\r\n },\r\n fragment: getComputeFunc(useComputeShader, targetFormat)\r\n })!;\r\n }\r\n program.name = '@Water_PreFFT2';\r\n return program;\r\n}\r\n\r\n/** @internal */\r\nexport function createProgramFFT2H(\r\n useComputeShader = false,\r\n threadGroupSize: number,\r\n targetFormat: TextureFormat = 'rgba32f',\r\n limit?: 4 | 2\r\n) {\r\n function getComputeFunc(useComputeShader: boolean, fmt: TextureFormat) {\r\n return function (this: PBGlobalScope, pb: ProgramBuilder) {\r\n if (useComputeShader) {\r\n this.spectrum = pb.tex2DArray().sampleType('unfilterable-float').uniform(0);\r\n this.ifft =\r\n fmt === 'rgba32f'\r\n ? pb.texStorage2DArray.rgba32float().storage(0)\r\n : pb.texStorage2DArray.rgba16float().storage(0);\r\n } else {\r\n if (!limit || limit === 4) {\r\n this.$outputs.ifft0 = pb.vec4();\r\n this.$outputs.ifft1 = pb.vec4();\r\n this.$outputs.ifft2 = pb.vec4();\r\n this.$outputs.ifft3 = pb.vec4();\r\n this.spectrum0 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum1 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum2 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum3 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.ifft4 = pb.vec4();\r\n this.$outputs.ifft5 = pb.vec4();\r\n this.spectrum4 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.spectrum5 = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n }\r\n }\r\n this.butterfly = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.phase = pb.int().uniform(0);\r\n if (pb.getDevice().type === 'webgl') {\r\n this.texSize = pb.vec4().uniform(0);\r\n }\r\n const Complex = pb.defineStruct([pb.float('re'), pb.float('im')], 'Complex');\r\n pb.func('add', [Complex('a'), Complex('b')], function () {\r\n this.$return(Complex(pb.add(this.a.re, this.b.re), pb.add(this.a.im, this.b.im)));\r\n });\r\n pb.func('mul', [Complex('a'), Complex('b')], function () {\r\n this.$return(\r\n Complex(\r\n pb.sub(pb.mul(this.a.re, this.b.re), pb.mul(this.a.im, this.b.im)),\r\n pb.add(pb.mul(this.a.re, this.b.im), pb.mul(this.a.im, this.b.re))\r\n )\r\n );\r\n });\r\n pb.func('scale', [Complex('a'), pb.float('v')], function () {\r\n this.$return(Complex(pb.mul(this.a.re, this.v), pb.mul(this.a.im, this.v)));\r\n });\r\n for (let x = 0; x <= 5; x++) {\r\n if (x < 4 && limit === 2) {\r\n continue;\r\n }\r\n if (x > 3 && limit === 4) {\r\n continue;\r\n }\r\n pb.func(`twiddle${x}`, [pb.vec4('texelButt'), pb.int('y')], function () {\r\n if (pb.getDevice().type === 'webgl') {\r\n this.$l.texelA = pb.textureSampleLevel(\r\n this[`spectrum${x}`],\r\n pb.div(pb.vec2(this.texelButt.b, pb.float(this.y)), this.texSize.xy),\r\n 0\r\n );\r\n this.$l.texelB = pb.textureSampleLevel(\r\n this[`spectrum${x}`],\r\n pb.div(pb.vec2(this.texelButt.a, pb.float(this.y)), this.texSize.xy),\r\n 0\r\n );\r\n } else if (useComputeShader) {\r\n this.$l.texelA = pb.textureArrayLoad(\r\n this.spectrum,\r\n pb.ivec2(pb.int(this.texelButt.b), this.y),\r\n x,\r\n 0\r\n );\r\n this.$l.texelB = pb.textureArrayLoad(\r\n this.spectrum,\r\n pb.ivec2(pb.int(this.texelButt.a), this.y),\r\n x,\r\n 0\r\n );\r\n } else {\r\n this.$l.texelA = pb.textureLoad(\r\n this[`spectrum${x}`],\r\n pb.ivec2(pb.int(this.texelButt.b), this.y),\r\n 0\r\n );\r\n this.$l.texelB = pb.textureLoad(\r\n this[`spectrum${x}`],\r\n pb.ivec2(pb.int(this.texelButt.a), this.y),\r\n 0\r\n );\r\n }\r\n this.$l.w = Complex(this.texelButt.r, this.texelButt.g);\r\n this.$l.a1 = Complex(this.texelA.x, this.texelA.y);\r\n this.$l.b1 = Complex(this.texelB.x, this.texelB.y);\r\n this.$l.r1 = this.scale(this.add(this.a1, this.mul(this.b1, this.w)), 0.5);\r\n this.$l.a2 = Complex(this.texelA.z, this.texelA.w);\r\n this.$l.b2 = Complex(this.texelB.z, this.texelB.w);\r\n this.$l.r2 = this.scale(this.add(this.a2, this.mul(this.b2, this.w)), 0.5);\r\n this.$return(pb.vec4(this.r1.re, this.r1.im, this.r2.re, this.r2.im));\r\n });\r\n }\r\n pb.main(function () {\r\n this.$l.x = pb.int(getFragCoord(this, useComputeShader).x);\r\n this.$l.y = pb.int(getFragCoord(this, useComputeShader).y);\r\n if (pb.getDevice().type === 'webgl') {\r\n this.$l.texelButt = pb.textureSampleLevel(\r\n this.butterfly,\r\n pb.div(pb.vec2(pb.float(this.phase), pb.float(this.x)), this.texSize.zw),\r\n 0\r\n );\r\n } else {\r\n this.$l.texelButt = pb.textureLoad(this.butterfly, pb.ivec2(this.phase, this.x), 0);\r\n }\r\n if (useComputeShader) {\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 0,\r\n this.twiddle0(this.texelButt, this.y)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 1,\r\n this.twiddle1(this.texelButt, this.y)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 2,\r\n this.twiddle2(this.texelButt, this.y)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 3,\r\n this.twiddle3(this.texelButt, this.y)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 4,\r\n this.twiddle4(this.texelButt, this.y)\r\n );\r\n pb.textureArrayStore(\r\n this.ifft,\r\n this.$builtins.globalInvocationId.xy,\r\n 5,\r\n this.twiddle5(this.texelButt, this.y)\r\n );\r\n } else {\r\n if (!limit || limit === 4) {\r\n this.$outputs.ifft0 = this.twiddle0(this.texelButt, this.y);\r\n this.$outputs.ifft1 = this.twiddle1(this.texelButt, this.y);\r\n this.$outputs.ifft2 = this.twiddle2(this.texelButt, this.y);\r\n this.$outputs.ifft3 = this.twiddle3(this.texelButt, this.y);\r\n }\r\n if (!limit || limit === 2) {\r\n this.$outputs.ifft4 = this.twiddle4(this.texelButt, this.y);\r\n this.$outputs.ifft5 = this.twiddle5(this.texelButt, this.y);\r\n }\r\n }\r\n });\r\n };\r\n }\r\n let program: GPUProgram;\r\n if (useComputeShader) {\r\n program = getDevice().buildComputeProgram({\r\n workgroupSize: [threadGroupSize, threadGroupSize, 1],\r\n compute: getComputeFunc(useComputeShader, targetFormat)\r\n })!;\r\n } else {\r\n program = getDevice().buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.position = pb.vec3().attrib('position');\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.position, 1);\r\n });\r\n },\r\n fragment: getComputeFunc(useComputeShader, targetFormat)\r\n })!;\r\n }\r\n program.name = '@Water_FFT2H';\r\n return program;\r\n}\r\n"],"names":["getFragCoord","scope","useComputeShader","$builtins","globalInvocationId","xy","fragCoord","WaterShaderImpl","_vertexFunc","_shadingFunc","_setupUniformsFunc","setupUniformsFunc","vertexFunc","shadingFunc","setupUniforms","call","vertex","pos","xz","waveGenerator","getVertexNormal","pb","$builder","func","vec2","$l","uv0","div","sizes","x","uv1","y","uv2","z","_sx_sz_dxdx_dzdz0","textureArraySampleLevel","dataTexture","_sx_sz_dxdx_dzdz1","_sx_sz_dxdx_dzdz2","textureSampleLevel","sx_sz_dxdx_dzdz0","sx_sz_dxdx_dzdz1","sx_sz_dxdx_dzdz2","sx","add","sz","dxdx_dzdz","mul","zw","croppinesses","slope","normal","normalize","vec3","neg","$return","shading","worldPos","worldNormal","foamFactor","discardable","createProgramOcean","shadingImpl","program","getDevice","buildRenderProgram","$inputs","position","attrib","$outputs","outPos","outNormal","outXZ","flip","int","uniform","viewProjMatrix","mat4","worldMatrix","level","float","main","vec4","calcVertexPositionAndNormal","$if","notEqual","fragment","outColor","region","or","any","lessThan","greaterThan","n","calcFragmentNormalAndFoam","xyz","w","name","createProgramPostFFT2","threadGroupSize","targetFormat","limit","getComputeFunc","fmt","N2","output","texStorage2DArray","rgba32float","storage","rgba16float","ifft","tex2DArray","dx_hy_dz_dxdz0","dx_hy_dz_dxdz1","ifft0","tex2D","ifft1","ifft2","ifft3","dx_hy_dz_dxdz2","ifft4","ifft5","type","ifftTexSize","fragPos","p","s","sub","mod","m","uv","ivec2","i","textureArrayStore","textureArrayLoad","textureLoad","buildComputeProgram","workgroupSize","compute","createProgramHk","spectrum","spectrum0","spectrum1","spectrum2","spectrum3","spectrum4","spectrum5","resolution","t","h0Texture","h0Texture0","h0Texture1","h0Texture2","h0TexSize","RATIO","g","Complex","defineStruct","Spectrum","a","re","b","im","cos","sin","v","hy","dx","dz","dxdx","dxdz","dzdz","lessThanEqual","size","k","Math","PI","kLen","length","sqrt","h0Texel","e","eix","h0","h0MinConj","conj","scale","out","dx_hy","spec","dz_dxdz","sx_sz","part0","part1","fragXY","s0","s1","s2","s3","spec0","getSpectrum0","spec1","getSpectrum1","compressSpectrum","s4","s5","spec2","getSpectrum2","createProgramH0","noise","wind","alignment","cascade0","cascade1","cascade2","noise0","rg","noise1","u0","v0","log","u1","v1","k2","dot","minK","greaterThanEqual","maxK","L","L2","h0k","A","exp","h0mk","pow","max","rnd","gauss","phillips","createProgramFFT2V","sampleType","butterfly","texSize","phase","texelA","texelButt","texelB","r","a1","b1","r1","a2","b2","r2","twiddle0","twiddle1","twiddle2","twiddle3","twiddle4","twiddle5","createProgramFFT2H"],"mappings":"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"}
|
package/dist/shadow/esm.js
CHANGED