@zephyr3d/scene 0.8.0 → 0.8.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/animationset.js +198 -1
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/ik/ccd_solver.js +3 -4
- package/dist/animation/ik/ccd_solver.js.map +1 -1
- package/dist/animation/ik/fabrik_solver.js +3 -4
- package/dist/animation/ik/fabrik_solver.js.map +1 -1
- package/dist/animation/ik/ik_pole_constraint.js +7 -2
- package/dist/animation/ik/ik_pole_constraint.js.map +1 -1
- package/dist/animation/ik/ik_utils.js +0 -79
- package/dist/animation/ik/ik_utils.js.map +1 -1
- package/dist/animation/ik/two_bone_ik_solver.js +3 -4
- package/dist/animation/ik/two_bone_ik_solver.js.map +1 -1
- package/dist/animation/spring/spring_bone.js +240 -0
- package/dist/animation/spring/spring_bone.js.map +1 -0
- package/dist/animation/spring/spring_bone_collider.js +198 -0
- package/dist/animation/spring/spring_bone_collider.js.map +1 -0
- package/dist/animation/spring/spring_bone_constraint.js +170 -0
- package/dist/animation/spring/spring_bone_constraint.js.map +1 -0
- package/dist/animation/spring/spring_bone_system.js +328 -0
- package/dist/animation/spring/spring_bone_system.js.map +1 -0
- package/dist/asset/model.js +2 -2
- package/dist/index.d.ts +15 -0
- package/dist/material/mixins/pbr/common.js +20 -17
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/render/gpu_picking.js +100 -0
- package/dist/render/gpu_picking.js.map +1 -0
- package/dist/render/rendergraph/device_pool_allocator.js +41 -0
- package/dist/render/rendergraph/device_pool_allocator.js.map +1 -0
- package/dist/render/rendergraph/executor.js +146 -0
- package/dist/render/rendergraph/executor.js.map +1 -0
- package/dist/render/rendergraph/forward_plus_builder.js +414 -0
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -0
- package/dist/render/rendergraph/rendergraph.js +306 -0
- package/dist/render/rendergraph/rendergraph.js.map +1 -0
- package/dist/render/rendergraph/types.js +57 -0
- package/dist/render/rendergraph/types.js.map +1 -0
- package/dist/render/sky_motion_vector.js +85 -0
- package/dist/render/sky_motion_vector.js.map +1 -0
- package/dist/utility/serialization/scene/animation.js +3 -3
- package/dist/utility/serialization/scene/node.js +1 -1
- package/package.json +2 -2
- package/dist/animation/ik/ik_chain_builder.js +0 -68
- package/dist/animation/ik/ik_chain_builder.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
- package/dist/src/animation/animation.js +0 -127
- package/dist/src/animation/animation.js.map +0 -1
- package/dist/src/animation/animationset.js +0 -255
- package/dist/src/animation/animationset.js.map +0 -1
- package/dist/src/animation/animationtrack.js +0 -34
- package/dist/src/animation/animationtrack.js.map +0 -1
- package/dist/src/animation/eulerrotationtrack.js +0 -52
- package/dist/src/animation/eulerrotationtrack.js.map +0 -1
- package/dist/src/animation/morphtarget.js +0 -93
- package/dist/src/animation/morphtarget.js.map +0 -1
- package/dist/src/animation/morphtrack.js +0 -70
- package/dist/src/animation/morphtrack.js.map +0 -1
- package/dist/src/animation/proptrack.js +0 -161
- package/dist/src/animation/proptrack.js.map +0 -1
- package/dist/src/animation/rotationtrack.js +0 -51
- package/dist/src/animation/rotationtrack.js.map +0 -1
- package/dist/src/animation/scaletrack.js +0 -50
- package/dist/src/animation/scaletrack.js.map +0 -1
- package/dist/src/animation/skeleton.js +0 -204
- package/dist/src/animation/skeleton.js.map +0 -1
- package/dist/src/animation/translationtrack.js +0 -50
- package/dist/src/animation/translationtrack.js.map +0 -1
- package/dist/src/app/app.js +0 -129
- package/dist/src/app/app.js.map +0 -1
- package/dist/src/app/inputmgr.js +0 -267
- package/dist/src/app/inputmgr.js.map +0 -1
- package/dist/src/asset/assetmanager.js +0 -404
- package/dist/src/asset/assetmanager.js.map +0 -1
- package/dist/src/asset/builtin.js +0 -337
- package/dist/src/asset/builtin.js.map +0 -1
- package/dist/src/asset/loaders/dds/dds.js +0 -470
- package/dist/src/asset/loaders/dds/dds.js.map +0 -1
- package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
- package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
- package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
- package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
- package/dist/src/asset/loaders/gltf/helpers.js +0 -327
- package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
- package/dist/src/asset/loaders/hdr/hdr.js +0 -180
- package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
- package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
- package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
- package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
- package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
- package/dist/src/asset/loaders/loader.js +0 -45
- package/dist/src/asset/loaders/loader.js.map +0 -1
- package/dist/src/asset/model.js +0 -414
- package/dist/src/asset/model.js.map +0 -1
- package/dist/src/blitter/bilateralblur.js +0 -221
- package/dist/src/blitter/bilateralblur.js.map +0 -1
- package/dist/src/blitter/blitter.js +0 -390
- package/dist/src/blitter/blitter.js.map +0 -1
- package/dist/src/blitter/box.js +0 -118
- package/dist/src/blitter/box.js.map +0 -1
- package/dist/src/blitter/copy.js +0 -22
- package/dist/src/blitter/copy.js.map +0 -1
- package/dist/src/blitter/gaussianblur.js +0 -228
- package/dist/src/blitter/gaussianblur.js.map +0 -1
- package/dist/src/camera/base.js +0 -92
- package/dist/src/camera/base.js.map +0 -1
- package/dist/src/camera/camera.js +0 -1005
- package/dist/src/camera/camera.js.map +0 -1
- package/dist/src/camera/fps.js +0 -238
- package/dist/src/camera/fps.js.map +0 -1
- package/dist/src/camera/orbit.js +0 -245
- package/dist/src/camera/orbit.js.map +0 -1
- package/dist/src/camera/orthocamera.js +0 -167
- package/dist/src/camera/orthocamera.js.map +0 -1
- package/dist/src/camera/perspectivecamera.js +0 -141
- package/dist/src/camera/perspectivecamera.js.map +0 -1
- package/dist/src/index.js +0 -120
- package/dist/src/index.js.map +0 -1
- package/dist/src/material/blinn.js +0 -81
- package/dist/src/material/blinn.js.map +0 -1
- package/dist/src/material/grassmaterial.js +0 -113
- package/dist/src/material/grassmaterial.js.map +0 -1
- package/dist/src/material/lambert.js +0 -92
- package/dist/src/material/lambert.js.map +0 -1
- package/dist/src/material/material.js +0 -301
- package/dist/src/material/material.js.map +0 -1
- package/dist/src/material/meshmaterial.js +0 -704
- package/dist/src/material/meshmaterial.js.map +0 -1
- package/dist/src/material/mixins/albedocolor.js +0 -76
- package/dist/src/material/mixins/albedocolor.js.map +0 -1
- package/dist/src/material/mixins/foliage.js +0 -47
- package/dist/src/material/mixins/foliage.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
- package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
- package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
- package/dist/src/material/mixins/lit.js +0 -476
- package/dist/src/material/mixins/lit.js.map +0 -1
- package/dist/src/material/mixins/pbr/common.js +0 -918
- package/dist/src/material/mixins/pbr/common.js.map +0 -1
- package/dist/src/material/mixins/texture.js +0 -172
- package/dist/src/material/mixins/texture.js.map +0 -1
- package/dist/src/material/mixins/vertexcolor.js +0 -56
- package/dist/src/material/mixins/vertexcolor.js.map +0 -1
- package/dist/src/material/particle.js +0 -178
- package/dist/src/material/particle.js.map +0 -1
- package/dist/src/material/pbrmr.js +0 -97
- package/dist/src/material/pbrmr.js.map +0 -1
- package/dist/src/material/pbrsg.js +0 -97
- package/dist/src/material/pbrsg.js.map +0 -1
- package/dist/src/material/shader/helper.js +0 -1209
- package/dist/src/material/shader/helper.js.map +0 -1
- package/dist/src/material/terrain-cm.js +0 -606
- package/dist/src/material/terrain-cm.js.map +0 -1
- package/dist/src/material/terrainmaterial.js +0 -375
- package/dist/src/material/terrainmaterial.js.map +0 -1
- package/dist/src/material/unlit.js +0 -41
- package/dist/src/material/unlit.js.map +0 -1
- package/dist/src/material/water.js +0 -417
- package/dist/src/material/water.js.map +0 -1
- package/dist/src/posteffect/bloom.js +0 -361
- package/dist/src/posteffect/bloom.js.map +0 -1
- package/dist/src/posteffect/compositor.js +0 -226
- package/dist/src/posteffect/compositor.js.map +0 -1
- package/dist/src/posteffect/fxaa.js +0 -273
- package/dist/src/posteffect/fxaa.js.map +0 -1
- package/dist/src/posteffect/grayscale.js +0 -69
- package/dist/src/posteffect/grayscale.js.map +0 -1
- package/dist/src/posteffect/motionblur.js +0 -96
- package/dist/src/posteffect/motionblur.js.map +0 -1
- package/dist/src/posteffect/posteffect.js +0 -126
- package/dist/src/posteffect/posteffect.js.map +0 -1
- package/dist/src/posteffect/sao.js +0 -324
- package/dist/src/posteffect/sao.js.map +0 -1
- package/dist/src/posteffect/ssr.js +0 -489
- package/dist/src/posteffect/ssr.js.map +0 -1
- package/dist/src/posteffect/taa.js +0 -172
- package/dist/src/posteffect/taa.js.map +0 -1
- package/dist/src/posteffect/tonemap.js +0 -94
- package/dist/src/posteffect/tonemap.js.map +0 -1
- package/dist/src/render/abuffer_oit.js +0 -361
- package/dist/src/render/abuffer_oit.js.map +0 -1
- package/dist/src/render/clipmap.js +0 -851
- package/dist/src/render/clipmap.js.map +0 -1
- package/dist/src/render/cluster_light.js +0 -333
- package/dist/src/render/cluster_light.js.map +0 -1
- package/dist/src/render/cull_visitor.js +0 -187
- package/dist/src/render/cull_visitor.js.map +0 -1
- package/dist/src/render/depthpass.js +0 -68
- package/dist/src/render/depthpass.js.map +0 -1
- package/dist/src/render/drawable_mixin.js +0 -227
- package/dist/src/render/drawable_mixin.js.map +0 -1
- package/dist/src/render/envlight.js +0 -463
- package/dist/src/render/envlight.js.map +0 -1
- package/dist/src/render/fbm_wavegenerator.js +0 -251
- package/dist/src/render/fbm_wavegenerator.js.map +0 -1
- package/dist/src/render/fft_wavegenerator.js +0 -1006
- package/dist/src/render/fft_wavegenerator.js.map +0 -1
- package/dist/src/render/fullscreenquad.js +0 -38
- package/dist/src/render/fullscreenquad.js.map +0 -1
- package/dist/src/render/gerstner_wavegenerator.js +0 -314
- package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
- package/dist/src/render/globalbindgroup_allocator.js +0 -60
- package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
- package/dist/src/render/hzb.js +0 -273
- package/dist/src/render/hzb.js.map +0 -1
- package/dist/src/render/lightpass.js +0 -172
- package/dist/src/render/lightpass.js.map +0 -1
- package/dist/src/render/objectcolorpass.js +0 -51
- package/dist/src/render/objectcolorpass.js.map +0 -1
- package/dist/src/render/primitive.js +0 -364
- package/dist/src/render/primitive.js.map +0 -1
- package/dist/src/render/render_queue.js +0 -467
- package/dist/src/render/render_queue.js.map +0 -1
- package/dist/src/render/renderbundle_wrapper.js +0 -152
- package/dist/src/render/renderbundle_wrapper.js.map +0 -1
- package/dist/src/render/renderer.js +0 -455
- package/dist/src/render/renderer.js.map +0 -1
- package/dist/src/render/renderpass.js +0 -200
- package/dist/src/render/renderpass.js.map +0 -1
- package/dist/src/render/shadowmap_pass.js +0 -56
- package/dist/src/render/shadowmap_pass.js.map +0 -1
- package/dist/src/render/sky.js +0 -1103
- package/dist/src/render/sky.js.map +0 -1
- package/dist/src/render/weightedblended_oit.js +0 -168
- package/dist/src/render/weightedblended_oit.js.map +0 -1
- package/dist/src/scene/batchgroup.js +0 -162
- package/dist/src/scene/batchgroup.js.map +0 -1
- package/dist/src/scene/environment.js +0 -209
- package/dist/src/scene/environment.js.map +0 -1
- package/dist/src/scene/graph_node.js +0 -72
- package/dist/src/scene/graph_node.js.map +0 -1
- package/dist/src/scene/light.js +0 -416
- package/dist/src/scene/light.js.map +0 -1
- package/dist/src/scene/mesh.js +0 -341
- package/dist/src/scene/mesh.js.map +0 -1
- package/dist/src/scene/octree.js +0 -649
- package/dist/src/scene/octree.js.map +0 -1
- package/dist/src/scene/particlesys.js +0 -738
- package/dist/src/scene/particlesys.js.map +0 -1
- package/dist/src/scene/raycast_visitor.js +0 -103
- package/dist/src/scene/raycast_visitor.js.map +0 -1
- package/dist/src/scene/scene.js +0 -284
- package/dist/src/scene/scene.js.map +0 -1
- package/dist/src/scene/scene_node.js +0 -732
- package/dist/src/scene/scene_node.js.map +0 -1
- package/dist/src/scene/terrain/grass.js +0 -278
- package/dist/src/scene/terrain/grass.js.map +0 -1
- package/dist/src/scene/terrain/heightfield.js +0 -475
- package/dist/src/scene/terrain/heightfield.js.map +0 -1
- package/dist/src/scene/terrain/patch.js +0 -530
- package/dist/src/scene/terrain/patch.js.map +0 -1
- package/dist/src/scene/terrain/quadtree.js +0 -461
- package/dist/src/scene/terrain/quadtree.js.map +0 -1
- package/dist/src/scene/terrain/terrain.js +0 -246
- package/dist/src/scene/terrain/terrain.js.map +0 -1
- package/dist/src/scene/terrain-cm/grass.js +0 -594
- package/dist/src/scene/terrain-cm/grass.js.map +0 -1
- package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
- package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
- package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
- package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
- package/dist/src/scene/water.js +0 -374
- package/dist/src/scene/water.js.map +0 -1
- package/dist/src/shaders/atmosphere.js +0 -957
- package/dist/src/shaders/atmosphere.js.map +0 -1
- package/dist/src/shaders/fog.js +0 -112
- package/dist/src/shaders/fog.js.map +0 -1
- package/dist/src/shaders/misc.js +0 -266
- package/dist/src/shaders/misc.js.map +0 -1
- package/dist/src/shaders/noise.js +0 -222
- package/dist/src/shaders/noise.js.map +0 -1
- package/dist/src/shaders/pbr.js +0 -51
- package/dist/src/shaders/pbr.js.map +0 -1
- package/dist/src/shaders/shadow.js +0 -636
- package/dist/src/shaders/shadow.js.map +0 -1
- package/dist/src/shaders/ssr.js +0 -490
- package/dist/src/shaders/ssr.js.map +0 -1
- package/dist/src/shaders/temporal.js +0 -215
- package/dist/src/shaders/temporal.js.map +0 -1
- package/dist/src/shaders/water.js +0 -756
- package/dist/src/shaders/water.js.map +0 -1
- package/dist/src/shadow/esm.js +0 -237
- package/dist/src/shadow/esm.js.map +0 -1
- package/dist/src/shadow/pcf_opt.js +0 -181
- package/dist/src/shadow/pcf_opt.js.map +0 -1
- package/dist/src/shadow/pcf_pd.js +0 -189
- package/dist/src/shadow/pcf_pd.js.map +0 -1
- package/dist/src/shadow/shader.js +0 -37
- package/dist/src/shadow/shader.js.map +0 -1
- package/dist/src/shadow/shadow_impl.js +0 -15
- package/dist/src/shadow/shadow_impl.js.map +0 -1
- package/dist/src/shadow/shadowmapper.js +0 -790
- package/dist/src/shadow/shadowmapper.js.map +0 -1
- package/dist/src/shadow/ssm.js +0 -159
- package/dist/src/shadow/ssm.js.map +0 -1
- package/dist/src/shadow/vsm.js +0 -297
- package/dist/src/shadow/vsm.js.map +0 -1
- package/dist/src/shapes/box.js +0 -386
- package/dist/src/shapes/box.js.map +0 -1
- package/dist/src/shapes/cylinder.js +0 -125
- package/dist/src/shapes/cylinder.js.map +0 -1
- package/dist/src/shapes/plane.js +0 -88
- package/dist/src/shapes/plane.js.map +0 -1
- package/dist/src/shapes/shape.js +0 -87
- package/dist/src/shapes/shape.js.map +0 -1
- package/dist/src/shapes/sphere.js +0 -114
- package/dist/src/shapes/sphere.js.map +0 -1
- package/dist/src/shapes/tetrahedron.js +0 -188
- package/dist/src/shapes/tetrahedron.js.map +0 -1
- package/dist/src/shapes/torus.js +0 -111
- package/dist/src/shapes/torus.js.map +0 -1
- package/dist/src/utility/aabbtree.js +0 -400
- package/dist/src/utility/aabbtree.js.map +0 -1
- package/dist/src/utility/bounding_volume.js +0 -29
- package/dist/src/utility/bounding_volume.js.map +0 -1
- package/dist/src/utility/debug.js +0 -28
- package/dist/src/utility/debug.js.map +0 -1
- package/dist/src/utility/draco/decoder.js +0 -116
- package/dist/src/utility/draco/decoder.js.map +0 -1
- package/dist/src/utility/misc.js +0 -105
- package/dist/src/utility/misc.js.map +0 -1
- package/dist/src/utility/panorama.js +0 -163
- package/dist/src/utility/panorama.js.map +0 -1
- package/dist/src/utility/pmrem.js +0 -354
- package/dist/src/utility/pmrem.js.map +0 -1
- package/dist/src/utility/rendermipmap.js +0 -115
- package/dist/src/utility/rendermipmap.js.map +0 -1
- package/dist/src/utility/serialization/json.js +0 -402
- package/dist/src/utility/serialization/json.js.map +0 -1
- package/dist/src/utility/serialization/manager.js +0 -623
- package/dist/src/utility/serialization/manager.js.map +0 -1
- package/dist/src/utility/serialization/scene/animation.js +0 -248
- package/dist/src/utility/serialization/scene/animation.js.map +0 -1
- package/dist/src/utility/serialization/scene/batch.js +0 -59
- package/dist/src/utility/serialization/scene/batch.js.map +0 -1
- package/dist/src/utility/serialization/scene/camera.js +0 -790
- package/dist/src/utility/serialization/scene/camera.js.map +0 -1
- package/dist/src/utility/serialization/scene/common.js +0 -222
- package/dist/src/utility/serialization/scene/common.js.map +0 -1
- package/dist/src/utility/serialization/scene/light.js +0 -575
- package/dist/src/utility/serialization/scene/light.js.map +0 -1
- package/dist/src/utility/serialization/scene/material.js +0 -1111
- package/dist/src/utility/serialization/scene/material.js.map +0 -1
- package/dist/src/utility/serialization/scene/mesh.js +0 -148
- package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
- package/dist/src/utility/serialization/scene/misc.js +0 -39
- package/dist/src/utility/serialization/scene/misc.js.map +0 -1
- package/dist/src/utility/serialization/scene/node.js +0 -451
- package/dist/src/utility/serialization/scene/node.js.map +0 -1
- package/dist/src/utility/serialization/scene/particle.js +0 -425
- package/dist/src/utility/serialization/scene/particle.js.map +0 -1
- package/dist/src/utility/serialization/scene/primitive.js +0 -692
- package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
- package/dist/src/utility/serialization/scene/scene.js +0 -704
- package/dist/src/utility/serialization/scene/scene.js.map +0 -1
- package/dist/src/utility/serialization/scene/terrain.js +0 -488
- package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
- package/dist/src/utility/serialization/scene/water.js +0 -465
- package/dist/src/utility/serialization/scene/water.js.map +0 -1
- package/dist/src/utility/shprojector.js +0 -297
- package/dist/src/utility/shprojector.js.map +0 -1
- package/dist/src/utility/textures/ggxlut.js +0 -213
- package/dist/src/utility/textures/ggxlut.js.map +0 -1
- package/dist/src/utility/textures/gradientnoise.js +0 -62
- package/dist/src/utility/textures/gradientnoise.js.map +0 -1
- package/dist/src/utility/textures/randomnoise.js +0 -41
- package/dist/src/utility/textures/randomnoise.js.map +0 -1
- package/dist/src/values.js +0 -162
- package/dist/src/values.js.map +0 -1
- package/dist/utility/blueprint/material/common.js +0 -7
- package/dist/utility/blueprint/material/common.js.map +0 -1
- package/dist/utility/serialization/blueprint/constants.js +0 -255
- package/dist/utility/serialization/blueprint/constants.js.map +0 -1
- package/dist/utility/serialization/blueprint/material/constants.js +0 -203
- package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
- package/dist/utility/serialization/blueprint/material/texture.js +0 -165
- package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sources":["../../../../src/material/mixins/pbr/common.ts"],"sourcesContent":["import type {\r\n BindGroup,\r\n PBFunctionScope,\r\n PBInsideFunctionScope,\r\n PBShaderExp,\r\n ShaderTypeFunc\r\n} from '@zephyr3d/device';\r\nimport type { MeshMaterial } from '../../meshmaterial';\r\nimport { applyMaterialMixins } from '../../meshmaterial';\r\nimport type { Immutable } from '@zephyr3d/base';\r\nimport { Vector3 } from '@zephyr3d/base';\r\nimport { Vector4 } from '@zephyr3d/base';\r\nimport type { DrawContext } from '../../../render';\r\nimport { getGGXLUT } from '../../../utility/textures/ggxlut';\r\nimport type { TextureMixinInstanceTypes } from '../texture';\r\nimport { mixinTextureProps } from '../texture';\r\nimport { ShaderHelper } from '../../shader/helper';\r\nimport { MaterialVaryingFlags, RENDER_PASS_TYPE_LIGHT } from '../../../values';\r\nimport type { IMixinPBRBRDF } from './brdf';\r\nimport { mixinPBRBRDF } from './brdf';\r\n\r\n/**\r\n * Interface for common PBR mixin\r\n *\r\n * @public\r\n */\r\nexport type IMixinPBRCommon = {\r\n ior: number;\r\n emissiveColor: Vector3;\r\n emissiveStrength: number;\r\n occlusionStrength: number;\r\n transmission: boolean;\r\n transmissionFactor: number;\r\n thicknessFactor: number;\r\n attenuationColor: Vector3;\r\n attenuationDistance: number;\r\n sheen: boolean;\r\n sheenColorFactor: Vector3;\r\n sheenRoughnessFactor: number;\r\n clearcoat: boolean;\r\n clearcoatIntensity: number;\r\n clearcoatRoughnessFactor: number;\r\n iridescence: boolean;\r\n iridescenceFactor: number;\r\n iridescenceIor: number;\r\n iridescenceThicknessMin: number;\r\n iridescenceThicknessMax: number;\r\n getCommonData(\r\n scope: PBInsideFunctionScope,\r\n albedo: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n TBN: PBShaderExp\r\n ): PBShaderExp;\r\n calculateCommonData(\r\n scope: PBInsideFunctionScope,\r\n albedo: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n TBN: PBShaderExp,\r\n data: PBShaderExp\r\n ): void;\r\n getCommonDatasStruct(scope: PBInsideFunctionScope): ShaderTypeFunc;\r\n calculateEmissiveColor(scope: PBInsideFunctionScope): PBShaderExp;\r\n getF0(scope: PBInsideFunctionScope): PBShaderExp;\r\n directLighting(\r\n scope: PBInsideFunctionScope,\r\n lightDir: PBShaderExp,\r\n lightColor: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n commonData: PBShaderExp,\r\n outColor: PBShaderExp\r\n ): void;\r\n indirectLighting(\r\n scope: PBInsideFunctionScope,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n commonData: PBShaderExp,\r\n outColor: PBShaderExp,\r\n outRoughness?: PBShaderExp\r\n ): void;\r\n} & TextureMixinInstanceTypes<\r\n [\r\n 'occlusion',\r\n 'emissive',\r\n 'sheenColor',\r\n 'sheenRoughness',\r\n 'clearcoatIntensity',\r\n 'clearcoatRoughness',\r\n 'clearcoatNormal',\r\n 'transmission',\r\n 'thickness',\r\n 'iridescence',\r\n 'iridescenceThickness'\r\n ]\r\n> &\r\n IMixinPBRBRDF;\r\n\r\n/**\r\n * PBR common stuff mixin\r\n * @param BaseCls - Class to mix in\r\n * @returns Mixed class\r\n *\r\n * @public\r\n */\r\nexport function mixinPBRCommon<T extends typeof MeshMaterial>(BaseCls: T) {\r\n if ((BaseCls as any).pbrCommonMixed) {\r\n return BaseCls as T & { new (...args: any[]): IMixinPBRCommon; FEATURE_TRANSMISSION: number };\r\n }\r\n const S = applyMaterialMixins(\r\n BaseCls,\r\n mixinPBRBRDF,\r\n mixinTextureProps('occlusion'),\r\n mixinTextureProps('emissive'),\r\n mixinTextureProps('sheenColor'),\r\n mixinTextureProps('sheenRoughness'),\r\n mixinTextureProps('clearcoatIntensity'),\r\n mixinTextureProps('clearcoatRoughness'),\r\n mixinTextureProps('clearcoatNormal'),\r\n mixinTextureProps('transmission'),\r\n mixinTextureProps('thickness'),\r\n mixinTextureProps('iridescence'),\r\n mixinTextureProps('iridescenceThickness')\r\n );\r\n let FEATURE_SHEEN = 0;\r\n let FEATURE_CLEARCOAT = 0;\r\n let FEATURE_TRANSMISSION = 0;\r\n let FEATURE_IRIDESCENCE = 0;\r\n\r\n const EMISSIVE_COLOR_UNIFORM = S.defineInstanceUniform('emissiveColor', 'rgb', 'EmissiveColor');\r\n const EMISSIVE_STRENGTH_UNIFORM = S.defineInstanceUniform('emissiveStrength', 'float', 'EmissiveStrength');\r\n\r\n const cls = class extends S {\r\n static readonly pbrCommonMixed = true;\r\n private readonly _f0: Vector4;\r\n private readonly _emissiveColor: Vector3;\r\n private _emissiveStrength: number;\r\n private _occlusionStrength: number;\r\n private readonly _sheenFactor: Vector4;\r\n private readonly _clearcoatFactor: Vector4;\r\n private _transmissionFactor: number;\r\n private _thicknessFactor: number;\r\n private readonly _attenuationColor: Vector3;\r\n private _attenuationDistance: number;\r\n private readonly _iridescenceFactor: Vector4;\r\n constructor() {\r\n super();\r\n this._f0 = new Vector4(0.04, 0.04, 0.04, 1.5);\r\n this._occlusionStrength = 1;\r\n this._emissiveColor = new Vector3(0, 0, 0);\r\n this._emissiveStrength = 1;\r\n this._sheenFactor = Vector4.zero();\r\n this._clearcoatFactor = new Vector4(0, 0, 1, 0);\r\n this._transmissionFactor = 0;\r\n this._thicknessFactor = 0;\r\n this._attenuationColor = Vector3.one();\r\n this._attenuationDistance = 99999;\r\n this._iridescenceFactor = new Vector4(0, 1.3, 100, 400);\r\n }\r\n copyFrom(other: this) {\r\n super.copyFrom(other);\r\n this.ior = other.ior;\r\n this.transmissionFactor = other.transmissionFactor;\r\n this.thicknessFactor = other.thicknessFactor;\r\n this.attenuationColor = other.attenuationColor;\r\n this.attenuationDistance = other.attenuationDistance;\r\n this.iridescenceFactor = other.iridescenceFactor;\r\n this.iridescenceIor = other.iridescenceIor;\r\n this.iridescenceThicknessMin = other.iridescenceThicknessMin;\r\n this.iridescenceThicknessMax = other.iridescenceThicknessMax;\r\n this.occlusionStrength = other.occlusionStrength;\r\n this.emissiveColor = other.emissiveColor;\r\n this.emissiveStrength = other.emissiveStrength;\r\n this.transmission = other.transmission;\r\n this.iridescence = other.iridescence;\r\n this.clearcoat = other.clearcoat;\r\n this.clearcoatIntensity = other.clearcoatIntensity;\r\n this.clearcoatRoughnessFactor = other.clearcoatRoughnessFactor;\r\n this.sheen = other.sheen;\r\n this.sheenColorFactor = other.sheenColorFactor;\r\n this.sheenRoughnessFactor = other.sheenRoughnessFactor;\r\n }\r\n get ior() {\r\n return this._f0.w;\r\n }\r\n set ior(val) {\r\n if (val !== this._f0.w) {\r\n let k = (val - 1) / (val + 1);\r\n k *= k;\r\n this._f0.setXYZW(k, k, k, val);\r\n this.uniformChanged();\r\n }\r\n }\r\n get transmissionFactor() {\r\n return this._transmissionFactor;\r\n }\r\n set transmissionFactor(val) {\r\n if (val !== this._transmissionFactor) {\r\n this._transmissionFactor = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get thicknessFactor() {\r\n return this._thicknessFactor;\r\n }\r\n set thicknessFactor(val) {\r\n if (this._thicknessFactor !== val) {\r\n this._thicknessFactor = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get attenuationColor(): Immutable<Vector3> {\r\n return this._attenuationColor;\r\n }\r\n set attenuationColor(val: Immutable<Vector3>) {\r\n if (!val.equalsTo(this._attenuationColor)) {\r\n this._attenuationColor.set(val);\r\n this.uniformChanged();\r\n }\r\n }\r\n get attenuationDistance() {\r\n return this._attenuationDistance;\r\n }\r\n set attenuationDistance(val) {\r\n if (val !== this._attenuationDistance) {\r\n this._attenuationDistance = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get iridescenceFactor() {\r\n return this._iridescenceFactor.x;\r\n }\r\n set iridescenceFactor(val) {\r\n if (this._iridescenceFactor.x !== val) {\r\n this._iridescenceFactor.x = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get iridescenceIor() {\r\n return this._iridescenceFactor.y;\r\n }\r\n set iridescenceIor(val) {\r\n if (this._iridescenceFactor.y !== val) {\r\n this._iridescenceFactor.y = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get iridescenceThicknessMin() {\r\n return this._iridescenceFactor.z;\r\n }\r\n set iridescenceThicknessMin(val) {\r\n if (this._iridescenceFactor.z !== val) {\r\n this._iridescenceFactor.z = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get iridescenceThicknessMax() {\r\n return this._iridescenceFactor.w;\r\n }\r\n set iridescenceThicknessMax(val) {\r\n if (this._iridescenceFactor.w !== val) {\r\n this._iridescenceFactor.w = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get occlusionStrength() {\r\n return this._occlusionStrength;\r\n }\r\n set occlusionStrength(val) {\r\n if (val !== this._occlusionStrength) {\r\n this._occlusionStrength = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get emissiveColor(): Immutable<Vector3> {\r\n return this._emissiveColor;\r\n }\r\n set emissiveColor(val: Immutable<Vector3>) {\r\n if (\r\n val.x !== this._emissiveColor.x ||\r\n val.y !== this._emissiveColor.y ||\r\n val.z !== this._emissiveColor.z\r\n ) {\r\n this._emissiveColor.set(val);\r\n this.uniformChanged();\r\n }\r\n }\r\n get emissiveStrength() {\r\n return this._emissiveStrength;\r\n }\r\n set emissiveStrength(val) {\r\n if (this._emissiveStrength !== val) {\r\n this._emissiveStrength = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get transmission() {\r\n return this.featureUsed<boolean>(FEATURE_TRANSMISSION);\r\n }\r\n set transmission(val) {\r\n this.useFeature(FEATURE_TRANSMISSION, !!val);\r\n }\r\n get iridescence() {\r\n return this.featureUsed<boolean>(FEATURE_IRIDESCENCE);\r\n }\r\n set iridescence(val) {\r\n this.useFeature(FEATURE_IRIDESCENCE, !!val);\r\n }\r\n get clearcoat() {\r\n return this.featureUsed<boolean>(FEATURE_CLEARCOAT);\r\n }\r\n set clearcoat(val) {\r\n this.useFeature(FEATURE_CLEARCOAT, !!val);\r\n }\r\n get clearcoatIntensity() {\r\n return this._clearcoatFactor.x;\r\n }\r\n set clearcoatIntensity(val) {\r\n if (val !== this._clearcoatFactor.x) {\r\n this._clearcoatFactor.x = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get clearcoatRoughnessFactor() {\r\n return this._clearcoatFactor.y;\r\n }\r\n set clearcoatRoughnessFactor(val) {\r\n if (val !== this._clearcoatFactor.y) {\r\n this._clearcoatFactor.y = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get sheen() {\r\n return this.featureUsed<boolean>(FEATURE_SHEEN);\r\n }\r\n set sheen(val) {\r\n this.useFeature(FEATURE_SHEEN, !!val);\r\n }\r\n get sheenColorFactor(): Immutable<Vector3> {\r\n return this._sheenFactor.xyz();\r\n }\r\n set sheenColorFactor(val: Immutable<Vector3>) {\r\n if (val.x !== this._sheenFactor.x || val.y !== this._sheenFactor.y || val.z !== this._sheenFactor.z) {\r\n this._sheenFactor.x = val.x;\r\n this._sheenFactor.y = val.y;\r\n this._sheenFactor.z = val.z;\r\n this.uniformChanged();\r\n }\r\n }\r\n get sheenRoughnessFactor() {\r\n return this._sheenFactor.w;\r\n }\r\n set sheenRoughnessFactor(val) {\r\n if (val !== this._sheenFactor.w) {\r\n this._sheenFactor.w = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n vertexShader(scope: PBFunctionScope) {\r\n super.vertexShader(scope);\r\n if (this.needFragmentColor() && this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING) {\r\n scope.$outputs.zEmissiveColor = this.getInstancedUniform(scope, EMISSIVE_COLOR_UNIFORM);\r\n scope.$outputs.zEmissiveStrength = this.getInstancedUniform(scope, EMISSIVE_STRENGTH_UNIFORM);\r\n }\r\n }\r\n fragmentShader(scope: PBFunctionScope) {\r\n const pb = scope.$builder;\r\n super.fragmentShader(scope);\r\n if (this.needFragmentColor()) {\r\n scope.zF0 = pb.vec4().uniform(2);\r\n if (!(this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING)) {\r\n scope.zEmissiveColor = pb.vec3().uniform(2);\r\n scope.zEmissiveStrength = pb.float().uniform(2);\r\n }\r\n if (this.occlusionTexture) {\r\n scope.zOcclusionStrength = pb.float().uniform(2);\r\n }\r\n if (this.sheen) {\r\n scope.zSheenFactor = pb.vec4().uniform(2);\r\n }\r\n if (this.clearcoat) {\r\n scope.zClearcoatFactor = pb.vec4().uniform(2);\r\n }\r\n if (this.transmission && this.drawContext.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\r\n scope.zTransmissionFactor = pb.float().uniform(2);\r\n scope.zThicknessFactor = pb.float().uniform(2);\r\n scope.zAttenuationColor = pb.vec3().uniform(2);\r\n scope.zAttenuationDistance = pb.float().uniform(2);\r\n }\r\n if (this.iridescence) {\r\n scope.zIridescenceFactor = pb.vec4().uniform(2);\r\n }\r\n if (this.drawContext.drawEnvLight) {\r\n scope.zGGXLut = pb.tex2D().uniform(2);\r\n }\r\n }\r\n }\r\n needSceneColor() {\r\n return this.transmission;\r\n }\r\n applyUniformValues(bindGroup: BindGroup, ctx: DrawContext, pass: number) {\r\n super.applyUniformValues(bindGroup, ctx, pass);\r\n if (this.needFragmentColor(ctx)) {\r\n bindGroup.setValue('zF0', this._f0);\r\n if (!(ctx.materialFlags & MaterialVaryingFlags.INSTANCING)) {\r\n bindGroup.setValue('zEmissiveColor', this._emissiveColor);\r\n bindGroup.setValue('zEmissiveStrength', this._emissiveStrength);\r\n }\r\n if (this.occlusionTexture) {\r\n bindGroup.setValue('zOcclusionStrength', this._occlusionStrength);\r\n }\r\n if (this.sheen) {\r\n bindGroup.setValue('zSheenFactor', this._sheenFactor);\r\n }\r\n if (this.clearcoat) {\r\n bindGroup.setValue('zClearcoatFactor', this._clearcoatFactor);\r\n }\r\n if (this.transmission && ctx.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\r\n bindGroup.setValue('zTransmissionFactor', this._transmissionFactor);\r\n bindGroup.setValue('zThicknessFactor', this._thicknessFactor);\r\n bindGroup.setValue('zAttenuationColor', this._attenuationColor);\r\n bindGroup.setValue('zAttenuationDistance', this._attenuationDistance);\r\n }\r\n if (this.iridescence) {\r\n bindGroup.setValue('zIridescenceFactor', this._iridescenceFactor);\r\n }\r\n if (ctx.drawEnvLight) {\r\n bindGroup.setTexture('zGGXLut', getGGXLUT(1024));\r\n }\r\n }\r\n }\r\n getF0(scope: PBInsideFunctionScope) {\r\n return scope.zF0 as PBShaderExp;\r\n }\r\n getCommonDatasStruct(scope: PBInsideFunctionScope) {\r\n const pb = scope.$builder;\r\n return pb.defineStruct([\r\n pb.vec4('f0'),\r\n pb.vec3('f90'),\r\n pb.vec4('diffuse'),\r\n pb.float('metallic'),\r\n pb.float('roughness'),\r\n pb.float('specularWeight'),\r\n ...(this.sheen\r\n ? [pb.float('sheenAlbedoScaling'), pb.vec3('sheenColor'), pb.float('sheenRoughness')]\r\n : []),\r\n ...(this.clearcoat\r\n ? [pb.vec4('ccFactor'), pb.vec3('ccNormal'), pb.float('ccNoV'), pb.float('ccFresnel')]\r\n : []),\r\n ...(this.transmission && this.drawContext.renderPass!.type === RENDER_PASS_TYPE_LIGHT\r\n ? [\r\n pb.float('transmissionFactor'),\r\n pb.float('thicknessFactor'),\r\n pb.vec3('attenuationColor'),\r\n pb.float('attenuationDistance')\r\n ]\r\n : []),\r\n ...(this.iridescence\r\n ? [pb.vec4('iridescenceFactor'), pb.vec3('iridescenceFresnel'), pb.vec3('iridescenceF0')]\r\n : [])\r\n ]);\r\n }\r\n getCommonData(\r\n scope: PBInsideFunctionScope,\r\n albedo: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n TBN: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const funcName = 'Z_getCommonData';\r\n pb.func(\r\n funcName,\r\n [pb.vec4('albedo'), pb.vec3('normal'), pb.vec3('viewVec'), pb.mat3('TBN')],\r\n function () {\r\n this.$l.data = that.getCommonDatasStruct(this)();\r\n that.calculateCommonData(this, this.albedo, this.normal, this.viewVec, this.TBN, this.data);\r\n this.$return(this.data);\r\n }\r\n );\r\n return scope.$g[funcName](albedo, normal, viewVec, TBN) as PBShaderExp;\r\n }\r\n calculateCommonData(\r\n scope: PBInsideFunctionScope,\r\n albedo: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n TBN: PBShaderExp,\r\n data: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n if (this.sheen) {\r\n if (this.sheenColorTexture) {\r\n data.sheenColor = pb.mul(this.sampleSheenColorTexture(scope).rgb, scope.zSheenFactor.rgb);\r\n } else {\r\n data.sheenColor = scope.zSheenFactor.rgb;\r\n }\r\n if (this.sheenRoughnessTexture) {\r\n data.sheenRoughness = pb.mul(this.sampleSheenRoughnessTexture(scope).a, scope.zSheenFactor.a);\r\n } else {\r\n data.sheenRoughness = scope.zSheenFactor.a;\r\n }\r\n scope.$l.sheenDFG = 0.157;\r\n data.sheenAlbedoScaling = pb.sub(\r\n 1,\r\n pb.mul(pb.max(pb.max(data.sheenColor.r, data.sheenColor.g), data.sheenColor.b), scope.sheenDFG)\r\n );\r\n }\r\n if (this.clearcoat) {\r\n if (this.clearcoatNormalTexture) {\r\n const ccNormal = pb.mul(\r\n pb.sub(pb.mul(this.sampleClearcoatNormalTexture(scope).rgb, 2), pb.vec3(1)),\r\n pb.vec3(scope.zClearcoatFactor.zz, 1)\r\n );\r\n data.ccNormal = pb.normalize(pb.mul(TBN, ccNormal));\r\n } else {\r\n data.ccNormal = TBN[2];\r\n }\r\n data.ccNoV = pb.clamp(pb.dot(data.ccNormal, viewVec), 0.0001, 1);\r\n data.ccFactor = scope.zClearcoatFactor;\r\n if (this.clearcoatIntensityTexture) {\r\n data.ccFactor.x = pb.mul(data.ccFactor.x, this.sampleClearcoatIntensityTexture(scope).r);\r\n }\r\n if (this.clearcoatRoughnessTexture) {\r\n data.ccFactor.y = pb.clamp(\r\n pb.mul(data.ccFactor.y, this.sampleClearcoatRoughnessTexture(scope).g),\r\n 0,\r\n 1\r\n );\r\n }\r\n }\r\n if (this.transmission && this.drawContext.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\r\n if (this.transmissionTexture) {\r\n data.transmissionFactor = pb.mul(\r\n this.sampleTransmissionTexture(scope).r,\r\n scope.zTransmissionFactor\r\n );\r\n } else {\r\n data.transmissionFactor = scope.zTransmissionFactor;\r\n }\r\n if (this.thicknessTexture) {\r\n data.thicknessFactor = pb.mul(this.sampleThicknessTexture(scope).g, scope.zThicknessFactor);\r\n } else {\r\n data.thicknessFactor = scope.zThicknessFactor;\r\n }\r\n data.attenuationColor = scope.zAttenuationColor;\r\n data.attenuationDistance = scope.zAttenuationDistance;\r\n }\r\n if (this.iridescence) {\r\n data.iridescenceFactor = scope.zIridescenceFactor;\r\n if (this.iridescenceTexture) {\r\n data.iridescenceFactor.x = pb.mul(this.sampleIridescenceTexture(scope).r, data.iridescenceFactor.x);\r\n }\r\n if (this.iridescenceThicknessTexture) {\r\n data.iridescenceFactor.w = pb.mix(\r\n data.iridescenceFactor.z,\r\n data.iridescenceFactor.w,\r\n this.sampleIridescenceThicknessTexture(scope).g\r\n );\r\n }\r\n data.iridescenceFresnel = this.evalIridescence(\r\n scope,\r\n 1,\r\n data.iridescenceFactor.y,\r\n pb.clamp(pb.dot(normal, viewVec), 0, 1),\r\n data.iridescenceFactor.w,\r\n data.f0.rgb\r\n );\r\n data.iridescenceF0 = this.schlickToF0(\r\n scope,\r\n data.iridescenceFresnel,\r\n pb.vec3(1),\r\n pb.clamp(pb.dot(normal, viewVec), 0, 1)\r\n );\r\n }\r\n }\r\n getEmissiveColor(scope: PBInsideFunctionScope) {\r\n const instancing = !!(this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING);\r\n return (instancing ? scope.$inputs.zEmissiveColor : scope.zEmissiveColor) as PBShaderExp;\r\n }\r\n getEmissiveStrength(scope: PBInsideFunctionScope) {\r\n const instancing = !!(this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING);\r\n return (instancing ? scope.$inputs.zEmissiveStrength : scope.zEmissiveStrength) as PBShaderExp;\r\n }\r\n calculateEmissiveColor(scope: PBInsideFunctionScope) {\r\n const pb = scope.$builder;\r\n if (this.emissiveTexture) {\r\n return pb.mul(\r\n this.sampleEmissiveTexture(scope).rgb,\r\n this.getEmissiveColor(scope),\r\n this.getEmissiveStrength(scope)\r\n ) as PBShaderExp;\r\n } else {\r\n return pb.mul(this.getEmissiveColor(scope), this.getEmissiveStrength(scope)) as PBShaderExp;\r\n }\r\n }\r\n D_Charlie(scope: PBInsideFunctionScope, NdotH: PBShaderExp, sheenRoughness: PBShaderExp): PBShaderExp {\r\n const funcNameDCharlie = 'Z_DCharlie';\r\n const pb = scope.$builder;\r\n pb.func(funcNameDCharlie, [pb.float('NdotH'), pb.float('sheenRoughness')], function () {\r\n this.$l.alphaG = pb.mul(this.sheenRoughness, this.sheenRoughness);\r\n this.$l.invR = pb.div(1, this.alphaG);\r\n this.$l.cos2h = pb.mul(this.NdotH, this.NdotH);\r\n this.$l.sin2h = pb.max(pb.sub(1, this.cos2h), 0.0078125);\r\n this.$return(\r\n pb.div(pb.mul(pb.add(this.invR, 2), pb.pow(this.sin2h, pb.mul(this.invR, 0.5))), 2 * Math.PI)\r\n );\r\n });\r\n return scope.$g[funcNameDCharlie](NdotH, sheenRoughness) as PBShaderExp;\r\n }\r\n V_Ashikhmin(scope: PBInsideFunctionScope, NdotL: PBShaderExp, NdotV: PBShaderExp) {\r\n const funcNameVAshikhmin = 'Z_VAshikhmin';\r\n const pb = scope.$builder;\r\n pb.func(funcNameVAshikhmin, [pb.float('NdotL'), pb.float('NdotV')], function () {\r\n this.$return(\r\n pb.clamp(\r\n pb.div(1, pb.mul(pb.sub(pb.add(this.NdotL, this.NdotV), pb.mul(this.NdotL, this.NdotV)), 4)),\r\n 0,\r\n 1\r\n )\r\n );\r\n });\r\n return scope.$g[funcNameVAshikhmin](NdotL, NdotV) as PBShaderExp;\r\n }\r\n getVolumeTransmissionRay(\r\n scope: PBInsideFunctionScope,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n thickness: PBShaderExp,\r\n ior: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'getVolumeTransmissionRay';\r\n pb.func(\r\n funcName,\r\n [pb.vec3('normal'), pb.vec3('viewVec'), pb.float('thickness'), pb.float('ior')],\r\n function () {\r\n this.$l.refractionVector = pb.refract(pb.neg(this.viewVec), this.normal, pb.div(1, this.ior));\r\n this.$return(pb.mul(this.refractionVector, this.$inputs.modelScale, this.thickness));\r\n }\r\n );\r\n return pb.getGlobalScope()[funcName](normal, viewVec, thickness, ior) as PBShaderExp;\r\n }\r\n getTransmissionSample(\r\n scope: PBInsideFunctionScope,\r\n fragCoord: PBShaderExp,\r\n roughness: PBShaderExp,\r\n ior: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'getTransmissionSample';\r\n pb.func(funcName, [pb.vec2('fragCoord'), pb.float('roughness'), pb.float('ior')], function () {\r\n this.$l.applyIorToRoughness = pb.mul(\r\n this.roughness,\r\n pb.clamp(pb.sub(pb.mul(this.ior, 2), 2), 0.0, 1.0)\r\n );\r\n this.$l.framebufferLod = pb.mul(\r\n pb.log2(ShaderHelper.getSceneColorTextureSize(this).x),\r\n this.applyIorToRoughness\r\n );\r\n this.$return(\r\n pb.textureSampleLevel(ShaderHelper.getSceneColorTexture(this), this.fragCoord, this.framebufferLod)\r\n .rgb\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](fragCoord, roughness, ior) as PBShaderExp;\r\n }\r\n getPunctualRadianceTransmission(\r\n scope: PBInsideFunctionScope,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n lightDir: PBShaderExp,\r\n alphaRoughness: PBShaderExp,\r\n f0: PBShaderExp,\r\n f90: PBShaderExp,\r\n baseColor: PBShaderExp,\r\n ior: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const funcName = 'getPunctualRadianceTransmission';\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec3('normal'),\r\n pb.vec3('viewVec'),\r\n pb.vec3('L'),\r\n pb.float('alphaRoughness'),\r\n pb.vec3('f0'),\r\n pb.vec3('f90'),\r\n pb.vec3('baseColor'),\r\n pb.float('ior')\r\n ],\r\n function () {\r\n this.$l.transmissionRoughness = pb.mul(\r\n this.alphaRoughness,\r\n pb.clamp(pb.sub(pb.mul(this.ior, 2), 2), 0.0, 1.0)\r\n );\r\n this.$l.mirrorL = pb.normalize(\r\n pb.add(this.L, pb.mul(this.normal, pb.dot(pb.neg(this.L), this.normal), 2))\r\n );\r\n this.$l.h = pb.normalize(pb.add(this.viewVec, this.mirrorL));\r\n this.$l.D = that.distributionGGX(\r\n this,\r\n pb.clamp(pb.dot(this.normal, this.h), 0, 1),\r\n this.transmissionRoughness\r\n );\r\n this.$l.F = that.fresnelSchlick(\r\n this,\r\n pb.clamp(pb.dot(this.viewVec, this.h), 0, 1),\r\n this.f0,\r\n this.f90\r\n );\r\n this.$l.V = that.visGGX(\r\n this,\r\n pb.clamp(pb.dot(this.normal, this.viewVec), 0, 1),\r\n pb.clamp(pb.dot(this.normal, this.mirrorL), 0, 1),\r\n this.transmissionRoughness\r\n );\r\n this.$return(pb.mul(pb.sub(pb.vec3(1), this.F), this.baseColor, this.D, this.V));\r\n }\r\n );\r\n return pb\r\n .getGlobalScope()\r\n [funcName](normal, viewVec, lightDir, alphaRoughness, f0, f90, baseColor, ior) as PBShaderExp;\r\n }\r\n applyVolumeAttenuation(\r\n scope: PBInsideFunctionScope,\r\n radiance: PBShaderExp,\r\n transmissionDistance: PBShaderExp,\r\n attenuationColor: PBShaderExp,\r\n attenuationDistance: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'applyVolumeAttenuation';\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec3('radiance'),\r\n pb.float('transmissionDistance'),\r\n pb.vec3('attenuationColor'),\r\n pb.float('attenuationDistance')\r\n ],\r\n function () {\r\n this.$if(pb.equal(this.attenuationDistance, 0), function () {\r\n this.$return(this.radiance);\r\n }).$else(function () {\r\n this.$l.attenuationCoefficient = pb.div(\r\n pb.neg(pb.log(this.attenuationColor)),\r\n this.attenuationDistance\r\n );\r\n this.$l.transmittance = pb.exp(\r\n pb.mul(pb.neg(this.attenuationCoefficient), this.transmissionDistance)\r\n );\r\n this.$return(pb.mul(this.radiance, this.transmittance));\r\n });\r\n }\r\n );\r\n return pb\r\n .getGlobalScope()\r\n [funcName](radiance, transmissionDistance, attenuationColor, attenuationDistance) as PBShaderExp;\r\n }\r\n getIBLVolumnRefraction(\r\n scope: PBInsideFunctionScope,\r\n brdf: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n roughness: PBShaderExp,\r\n baseColor: PBShaderExp,\r\n f0: PBShaderExp,\r\n f90: PBShaderExp,\r\n position: PBShaderExp,\r\n ior: PBShaderExp,\r\n thickness: PBShaderExp,\r\n attenuationColor: PBShaderExp,\r\n attenuationDistance: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'getIBLVolumeRefraction';\r\n const that = this;\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec2('brdf'),\r\n pb.vec3('normal'),\r\n pb.vec3('viewVec'),\r\n pb.float('roughness'),\r\n pb.vec3('baseColor'),\r\n pb.vec3('f0'),\r\n pb.vec3('f90'),\r\n pb.vec3('position'),\r\n pb.float('ior'),\r\n pb.float('thickness'),\r\n pb.vec3('attenuationColor'),\r\n pb.float('attenuationDistance')\r\n ],\r\n function () {\r\n this.$l.transmissionRay = that.getVolumeTransmissionRay(\r\n this,\r\n this.normal,\r\n this.viewVec,\r\n this.thickness,\r\n this.ior\r\n );\r\n this.$l.transmissionRayLength = pb.length(this.transmissionRay);\r\n this.$l.refractedRayExit = pb.add(this.position, this.transmissionRay);\r\n this.$l.ndcPos = pb.mul(\r\n ShaderHelper.getViewProjectionMatrix(this),\r\n pb.vec4(this.refractedRayExit, 1)\r\n );\r\n this.$l.refractionCoords = pb.add(pb.mul(pb.div(this.ndcPos.xy, this.ndcPos.w), 0.5), pb.vec2(0.5));\r\n this.$l.transmittedLight = that.getTransmissionSample(\r\n this,\r\n this.refractionCoords,\r\n this.roughness,\r\n this.ior\r\n );\r\n this.$l.attColor = that.applyVolumeAttenuation(\r\n this,\r\n this.transmittedLight,\r\n this.transmissionRayLength,\r\n this.attenuationColor,\r\n this.attenuationDistance\r\n );\r\n this.$l.specularColor = pb.add(pb.mul(this.f0, this.brdf.x), pb.mul(this.f90, this.brdf.y));\r\n this.$return(pb.mul(pb.sub(pb.vec3(1), this.specularColor), this.attColor, this.baseColor));\r\n }\r\n );\r\n return pb\r\n .getGlobalScope()\r\n [\r\n funcName\r\n ](brdf, normal, viewVec, roughness, baseColor, f0, f90, position, ior, thickness, attenuationColor, attenuationDistance) as PBShaderExp;\r\n }\r\n directLighting(\r\n scope: PBInsideFunctionScope,\r\n lightDir: PBShaderExp,\r\n lightColor: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n commonData: PBShaderExp,\r\n outColor: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const funcName = 'Z_PBRDirectLighting';\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec3('L'),\r\n pb.vec3('lightColor'),\r\n pb.vec3('normal'),\r\n pb.vec3('viewVec'),\r\n that.getCommonDatasStruct(scope)('data'),\r\n pb.vec3('outColor').inout()\r\n ],\r\n function () {\r\n this.$l.H = pb.normalize(pb.add(this.viewVec, this.L));\r\n this.$l.NoH = pb.clamp(pb.dot(this.normal, this.H), 0, 1);\r\n this.$l.NoL = pb.clamp(pb.dot(this.normal, this.L), 0, 1);\r\n this.$l.NoV = pb.clamp(pb.dot(this.normal, this.viewVec), 0, 1);\r\n this.$if(pb.greaterThan(this.NoL, 0), function () {\r\n this.$l.VoH = pb.clamp(pb.dot(this.viewVec, this.H), 0, 1);\r\n this.$l.schlickFresnel = that.fresnelSchlick(this, this.VoH, this.data.f0.rgb, this.data.f90);\r\n if (that.iridescence) {\r\n this.$l.F = pb.mix(\r\n this.schlickFresnel,\r\n this.data.iridescenceFresnel,\r\n this.data.iridescenceFactor.x\r\n );\r\n } else {\r\n this.$l.F = this.schlickFresnel;\r\n }\r\n this.$l.alphaRoughness = pb.mul(this.data.roughness, this.data.roughness);\r\n this.$l.D = that.distributionGGX(this, this.NoH, this.alphaRoughness);\r\n this.$l.V = that.visGGX(this, this.NoV, this.NoL, this.alphaRoughness);\r\n this.$l.specular = pb.mul(this.lightColor, this.D, this.V, this.F, this.data.specularWeight);\r\n if (that.sheen) {\r\n this.specular = pb.mul(this.specular, this.data.sheenAlbedoScaling);\r\n }\r\n this.outColor = pb.add(this.outColor, this.specular);\r\n if (that.iridescence) {\r\n this.$l.iridescenceFresnelMax = pb.vec3(\r\n pb.max(\r\n pb.max(this.data.iridescenceFresnel.r, this.data.iridescenceFresnel.g),\r\n this.data.iridescenceFresnel.b\r\n )\r\n );\r\n this.F = pb.mix(this.schlickFresnel, this.iridescenceFresnelMax, this.data.iridescenceFactor.x);\r\n }\r\n this.$l.diffuseBRDF = pb.mul(\r\n pb.sub(pb.vec3(1), pb.mul(this.F, this.data.specularWeight)),\r\n pb.div(this.data.diffuse.rgb, Math.PI)\r\n );\r\n this.$l.diffuse = pb.mul(this.lightColor, pb.max(this.diffuseBRDF, pb.vec3(0)));\r\n if (that.transmission && that.drawContext.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\r\n this.$l.transmissionRay = that.getVolumeTransmissionRay(\r\n this,\r\n this.normal,\r\n this.viewVec,\r\n this.data.thicknessFactor,\r\n this.data.f0.a\r\n );\r\n this.$l.pointToLight = pb.normalize(pb.sub(this.L, this.transmissionRay));\r\n this.$l.transmittedLight = pb.mul(\r\n this.lightColor,\r\n that.getPunctualRadianceTransmission(\r\n this,\r\n this.normal,\r\n this.viewVec,\r\n this.pointToLight,\r\n this.alphaRoughness,\r\n this.data.f0.rgb,\r\n this.data.f90.rgb,\r\n this.data.diffuse.rgb,\r\n this.data.f0.a\r\n )\r\n );\r\n this.transmittedLight = that.applyVolumeAttenuation(\r\n this,\r\n this.transmittedLight,\r\n pb.length(this.transmissionRay),\r\n this.data.attenuationColor,\r\n this.data.attenuationDistance\r\n );\r\n this.diffuse = pb.mix(this.diffuse, this.transmittedLight, this.data.transmissionFactor);\r\n }\r\n if (that.sheen) {\r\n this.diffuse = pb.mul(this.diffuse, this.data.sheenAlbedoScaling);\r\n }\r\n this.outColor = pb.add(this.outColor, this.diffuse);\r\n if (that.sheen) {\r\n this.$l.sheenD = that.D_Charlie(this, this.NoH, this.data.sheenRoughness);\r\n this.$l.sheenV = that.V_Ashikhmin(this, this.NoL, this.NoV);\r\n this.outColor = pb.add(\r\n this.outColor,\r\n pb.mul(this.lightColor, this.data.sheenColor, this.sheenD, this.sheenV)\r\n );\r\n }\r\n if (that.clearcoat) {\r\n this.alphaRoughness = pb.mul(this.data.ccFactor.y, this.data.ccFactor.y);\r\n this.NoH = pb.clamp(pb.dot(this.data.ccNormal, this.H), 0, 1);\r\n this.NoL = pb.clamp(pb.dot(this.data.ccNormal, this.L), 0, 1);\r\n this.ccF0 = pb.vec3(pb.pow(pb.div(pb.sub(this.data.f0.a, 1), pb.add(this.data.f0.a, 1)), 2));\r\n this.F = that.fresnelSchlick(this, this.VoH, this.ccF0, pb.vec3(1));\r\n this.D = that.distributionGGX(this, this.NoH, this.alphaRoughness);\r\n this.V = that.visGGX(this, this.data.ccNoV, this.NoL, this.alphaRoughness);\r\n this.outColor = pb.add(this.outColor, pb.mul(this.D, this.V, this.F, this.data.ccFactor.x));\r\n }\r\n });\r\n }\r\n );\r\n scope.$g[funcName](lightDir, lightColor, normal, viewVec, commonData, outColor);\r\n }\r\n fresnel0ToIor(scope: PBInsideFunctionScope, fresnel0: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_fresnel0ToIor';\r\n pb.func(funcName, [pb.vec3('fresnel0')], function () {\r\n this.$l.sqrtF0 = pb.sqrt(this.fresnel0);\r\n this.$return(pb.div(pb.add(this.sqrtF0, pb.vec3(1)), pb.sub(pb.vec3(1), this.sqrtF0)));\r\n });\r\n return pb.getGlobalScope()[funcName](fresnel0) as PBShaderExp;\r\n }\r\n iorToFresnel0v(scope: PBInsideFunctionScope, transmittedIor: PBShaderExp, incidentIor: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_iorToFresnel0v';\r\n pb.func(funcName, [pb.vec3('transmittedIor'), pb.float('incidentIor')], function () {\r\n this.$l.t = pb.div(\r\n pb.sub(this.transmittedIor, pb.vec3(this.incidentIor)),\r\n pb.add(this.transmittedIor, pb.vec3(this.incidentIor))\r\n );\r\n this.$return(pb.mul(this.t, this.t));\r\n });\r\n return pb.getGlobalScope()[funcName](transmittedIor, incidentIor) as PBShaderExp;\r\n }\r\n iorToFresnel0(scope: PBInsideFunctionScope, transmittedIor: PBShaderExp, incidentIor: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_iorToFresnel0';\r\n pb.func(funcName, [pb.float('transmittedIor'), pb.float('incidentIor')], function () {\r\n this.$l.t = pb.div(\r\n pb.sub(this.transmittedIor, this.incidentIor),\r\n pb.add(this.transmittedIor, this.incidentIor)\r\n );\r\n this.$return(pb.mul(this.t, this.t));\r\n });\r\n return pb.getGlobalScope()[funcName](transmittedIor, incidentIor) as PBShaderExp;\r\n }\r\n evalSensitivity(scope: PBInsideFunctionScope, OPD: PBShaderExp, shift: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_evalSensitivity';\r\n pb.func(funcName, [pb.float('OPD'), pb.vec3('shift')], function () {\r\n this.$l.phase = pb.mul(Math.PI * 2, this.OPD, 1e-9);\r\n this.$l.val = pb.vec3(5.4856e-13, 4.4201e-13, 5.2481e-13);\r\n this.$l.pos = pb.vec3(1.681e6, 1.7953e6, 2.2084e6);\r\n this.$l.va = pb.vec3(4.3278e9, 9.3046e9, 6.6121e9);\r\n this.$l.xyz = pb.mul(\r\n this.val,\r\n pb.sqrt(pb.mul(Math.PI * 2, this.va)),\r\n pb.cos(pb.add(pb.mul(this.pos, this.phase), this.shift)),\r\n pb.exp(pb.neg(pb.mul(this.phase, this.phase, this.va)))\r\n );\r\n this.xyz.x = pb.add(\r\n this.xyz.x,\r\n pb.mul(\r\n 9.747e-14,\r\n Math.sqrt(Math.PI * 2 * 4.5282e9),\r\n pb.cos(pb.add(pb.mul(this.phase, 2.2399e6), this.shift.x)),\r\n pb.exp(pb.mul(-4.5282e9, this.phase, this.phase))\r\n )\r\n );\r\n this.xyz = pb.div(this.xyz, 1.0685e-7);\r\n this.$return(\r\n pb.mul(\r\n pb.mat3(\r\n 3.2404542,\r\n -0.969266,\r\n 0.0556434,\r\n -1.5371385,\r\n 1.8760108,\r\n -0.2040259,\r\n -0.4985314,\r\n 0.041556,\r\n 1.0572252\r\n ),\r\n this.xyz\r\n )\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](OPD, shift) as PBShaderExp;\r\n }\r\n schlickToF0(scope: PBInsideFunctionScope, f: PBShaderExp, f90: PBShaderExp, VdotH: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_schlickToF0';\r\n pb.func(funcName, [pb.vec3('f'), pb.vec3('f90'), pb.float('VdotH')], function () {\r\n this.$l.x = pb.clamp(pb.sub(1, this.VdotH), 0, 1);\r\n this.$l.x2 = pb.mul(this.x, this.x);\r\n this.$l.x5 = pb.clamp(pb.mul(this.x, this.x2, this.x2), 0, 0.9999);\r\n this.$return(pb.div(pb.sub(this.f, pb.mul(this.f90, this.x5)), pb.sub(1, this.x5)));\r\n });\r\n return pb.getGlobalScope()[funcName](f, f90, VdotH) as PBShaderExp;\r\n }\r\n evalIridescence(\r\n scope: PBInsideFunctionScope,\r\n outsideIOR: PBShaderExp | number,\r\n eta2: PBShaderExp,\r\n cosTheta1: PBShaderExp,\r\n thinFilmThickness: PBShaderExp,\r\n baseF0: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const funcName = 'Z_evalIridescence';\r\n pb.func(\r\n funcName,\r\n [\r\n pb.float('outsideIOR'),\r\n pb.float('eta2'),\r\n pb.float('cosTheta1'),\r\n pb.float('thinFilmThickness'),\r\n pb.vec3('baseF0')\r\n ],\r\n function () {\r\n this.$l.iridescenceIor = pb.mix(\r\n this.outsideIOR,\r\n this.eta2,\r\n pb.smoothStep(0, 0.03, this.thinFilmThickness)\r\n );\r\n this.$l.t = pb.div(this.outsideIOR, this.iridescenceIor);\r\n this.$l.sinTheta2Sq = pb.mul(this.t, this.t, pb.sub(1, pb.mul(this.cosTheta1, this.cosTheta1)));\r\n this.$l.cosTheta2Sq = pb.sub(1, this.sinTheta2Sq);\r\n this.$if(pb.lessThan(this.cosTheta2Sq, 0), function () {\r\n this.$return(pb.vec3(1));\r\n });\r\n this.$l.cosTheta2 = pb.sqrt(this.cosTheta2Sq);\r\n\r\n this.$l.R0 = that.iorToFresnel0(this, this.iridescenceIor, this.outsideIOR);\r\n this.$l.R12 = that.fresnelSchlick(this, this.cosTheta1, pb.vec3(this.R0), pb.vec3(1)).x;\r\n this.$l.R21 = this.R12;\r\n this.$l.T121 = pb.sub(1, this.R12);\r\n this.$l.phi12 = pb.float(0);\r\n this.$if(pb.lessThan(this.iridescenceIor, this.outsideIOR), function () {\r\n this.phi12 = Math.PI;\r\n });\r\n this.$l.phi21 = pb.sub(Math.PI, this.phi12);\r\n\r\n this.$l.baseIOR = that.fresnel0ToIor(this, pb.clamp(this.baseF0, pb.vec3(0), pb.vec3(0.9999)));\r\n this.$l.R1 = that.iorToFresnel0v(this, this.baseIOR, this.iridescenceIor);\r\n this.$l.R23 = that.fresnelSchlick(this, this.cosTheta2, this.R1, pb.vec3(1));\r\n this.$l.phi23 = pb.vec3(0);\r\n this.$if(pb.lessThan(this.baseIOR.x, this.iridescenceIor), function () {\r\n this.phi23.x = Math.PI;\r\n });\r\n this.$if(pb.lessThan(this.baseIOR.y, this.iridescenceIor), function () {\r\n this.phi23.y = Math.PI;\r\n });\r\n this.$if(pb.lessThan(this.baseIOR.z, this.iridescenceIor), function () {\r\n this.phi23.z = Math.PI;\r\n });\r\n\r\n this.$l.OPD = pb.mul(this.iridescenceIor, this.thinFilmThickness, this.cosTheta2, 2);\r\n this.$l.phi = pb.add(pb.vec3(this.phi21), this.phi23);\r\n\r\n this.$l.R123 = pb.clamp(pb.mul(this.R12, this.R23), pb.vec3(1e-5), pb.vec3(0.9999));\r\n this.$l.r123 = pb.sqrt(this.R123);\r\n this.$l.Rs = pb.div(pb.mul(this.T121, this.T121, this.R23), pb.sub(pb.vec3(1), this.R123));\r\n\r\n this.$l.C0 = pb.add(pb.vec3(this.R12), this.Rs);\r\n this.$l.I = this.C0;\r\n\r\n this.$l.Cm = pb.sub(this.Rs, pb.vec3(this.T121));\r\n this.$for(pb.int('m'), 1, 3, function () {\r\n this.Cm = pb.mul(this.Cm, this.r123);\r\n this.$l.Sm = pb.mul(\r\n that.evalSensitivity(\r\n this,\r\n pb.mul(this.OPD, pb.float(this.m)),\r\n pb.mul(this.phi, pb.float(this.m))\r\n ),\r\n 2\r\n );\r\n this.I = pb.add(this.I, pb.mul(this.Cm, this.Sm));\r\n });\r\n this.$return(pb.max(this.I, pb.vec3(0)));\r\n }\r\n );\r\n return pb\r\n .getGlobalScope()\r\n [funcName](outsideIOR, eta2, cosTheta1, thinFilmThickness, baseF0) as PBShaderExp;\r\n }\r\n indirectLighting(\r\n scope: PBInsideFunctionScope,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n commonData: PBShaderExp,\r\n outColor: PBShaderExp,\r\n outRoughness?: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const ctx = that.drawContext;\r\n const funcName = 'Z_PBRIndirectLighting';\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec3('normal'),\r\n pb.vec3('viewVec'),\r\n that.getCommonDatasStruct(scope)('data'),\r\n pb.vec3('outColor').inout(),\r\n ...(outRoughness ? [pb.vec4('outRoughness').out()] : [])\r\n ],\r\n function () {\r\n if (\r\n !ctx.drawEnvLight ||\r\n (!ctx.env!.light.envLight.hasRadiance() && !ctx.env!.light.envLight.hasIrradiance())\r\n ) {\r\n return;\r\n }\r\n const envLightStrength = ShaderHelper.getEnvLightStrength(this);\r\n if (that.occlusionTexture) {\r\n const occlusionSample = that.sampleOcclusionTexture(this).r;\r\n this.$l.occlusion = pb.mul(\r\n pb.add(pb.mul(this.zOcclusionStrength, pb.sub(occlusionSample, 1)), 1),\r\n envLightStrength\r\n );\r\n } else {\r\n this.$l.occlusion = envLightStrength;\r\n }\r\n this.$l.NoV = pb.clamp(pb.dot(this.normal, this.viewVec), 0.0001, 1);\r\n this.$l.ggxLutSample = pb.clamp(\r\n pb.textureSampleLevel(\r\n this.zGGXLut,\r\n pb.clamp(pb.vec2(this.NoV, this.data.roughness), pb.vec2(0), pb.vec2(1)),\r\n 0\r\n ),\r\n pb.vec4(0),\r\n pb.vec4(1)\r\n );\r\n this.$l.f_ab = this.ggxLutSample.rg;\r\n this.$l.Fr = pb.sub(\r\n pb.max(pb.vec3(pb.sub(1, this.data.roughness)), this.data.f0.rgb),\r\n this.data.f0.rgb\r\n );\r\n if (that.iridescence) {\r\n this.$l.k_S = pb.mix(\r\n pb.add(this.data.f0.rgb, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5))),\r\n this.data.iridescenceFresnel,\r\n this.data.iridescenceFactor.x\r\n );\r\n } else {\r\n this.$l.k_S = pb.add(this.data.f0.rgb, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5)));\r\n }\r\n if (outRoughness || ctx.env!.light.envLight.hasRadiance()) {\r\n this.$l.FssEss = pb.add(pb.mul(this.k_S, this.f_ab.x), pb.vec3(this.f_ab.y));\r\n this.$l.specularFactor = pb.mul(this.FssEss, this.data.specularWeight, this.occlusion);\r\n if (that.sheen) {\r\n this.specularFactor = pb.mul(this.specularFactor, this.data.sheenAlbedoScaling);\r\n }\r\n if (outRoughness) {\r\n this.outRoughness = pb.vec4(this.specularFactor /*this.data.f0.rgb*/, this.data.roughness);\r\n } else if (ctx.env!.light.envLight.hasRadiance()) {\r\n this.$l.radiance = ctx.env!.light.envLight.getRadiance(\r\n this,\r\n pb.reflect(pb.neg(this.viewVec), this.normal),\r\n this.data.roughness\r\n );\r\n this.outColor = pb.add(this.outColor, pb.mul(this.radiance, this.specularFactor));\r\n }\r\n }\r\n if (ctx.env!.light.envLight.hasIrradiance()) {\r\n this.$l.irradiance = ctx.env!.light.envLight.getIrradiance(this, this.normal);\r\n if (that.iridescence) {\r\n this.$l.iridescenceF0Max = pb.vec3(\r\n pb.max(\r\n pb.max(this.data.iridescenceF0.r, this.data.iridescenceF0.g),\r\n this.data.iridescenceF0.b\r\n )\r\n );\r\n this.$l.mixedF0 = pb.mix(\r\n this.data.f0.rgb,\r\n this.iridescenceF0Max,\r\n this.data.iridescenceFactor.x\r\n );\r\n this.Fr = pb.sub(pb.max(pb.vec3(pb.sub(1, this.data.roughness)), this.mixedF0), this.mixedF0);\r\n this.k_S = pb.add(this.mixedF0, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5)));\r\n } else {\r\n this.$l.mixedF0 = this.data.f0.rgb;\r\n }\r\n this.$l.FssEss = pb.add(\r\n pb.mul(this.k_S, this.f_ab.x, this.data.specularWeight),\r\n pb.vec3(this.f_ab.y)\r\n );\r\n this.$l.Ems = pb.sub(1, pb.add(this.f_ab.x, this.f_ab.y));\r\n this.$l.F_avg = pb.mul(\r\n pb.add(this.mixedF0, pb.div(pb.sub(pb.vec3(1), this.mixedF0), 21)),\r\n this.data.specularWeight\r\n );\r\n this.$l.FmsEms = pb.div(\r\n pb.mul(this.FssEss, this.F_avg, this.Ems),\r\n pb.sub(pb.vec3(1), pb.mul(this.F_avg, this.Ems))\r\n );\r\n this.$l.k_D = pb.mul(this.data.diffuse.rgb, pb.add(pb.sub(pb.vec3(1), this.FssEss), this.FmsEms));\r\n this.$l.iblDiffuse = pb.mul(\r\n pb.add(this.FmsEms, this.k_D),\r\n pb.div(this.irradiance, Math.PI),\r\n this.occlusion\r\n );\r\n if (that.sheen) {\r\n this.iblDiffuse = pb.mul(this.iblDiffuse, this.data.sheenAlbedoScaling);\r\n }\r\n if (that.transmission && that.drawContext.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\r\n this.$l.iblTransmission = that.getIBLVolumnRefraction(\r\n this,\r\n this.ggxLutSample.rg,\r\n this.normal,\r\n this.viewVec,\r\n this.data.roughness,\r\n this.data.diffuse.rgb,\r\n this.data.f0.rgb,\r\n this.data.f90,\r\n this.$inputs.worldPos,\r\n this.data.f0.a,\r\n this.data.thicknessFactor,\r\n this.data.attenuationColor,\r\n this.data.attenuationDistance\r\n );\r\n this.iblDiffuse = pb.mix(this.iblDiffuse, this.iblTransmission, this.data.transmissionFactor);\r\n }\r\n this.outColor = pb.add(this.outColor, this.iblDiffuse);\r\n }\r\n if (that.sheen && ctx.env!.light.envLight.hasIrradiance()) {\r\n this.$l.refl = pb.reflect(pb.neg(this.viewVec), this.normal);\r\n this.$l.sheenBRDF = pb.clamp(\r\n pb.textureSampleLevel(\r\n this.zGGXLut,\r\n pb.clamp(pb.vec2(this.NoV, this.data.sheenRoughness), pb.vec2(0), pb.vec2(1)),\r\n 0\r\n ),\r\n pb.vec4(0),\r\n pb.vec4(1)\r\n ).b;\r\n this.outColor = pb.add(\r\n this.outColor,\r\n pb.mul(this.data.sheenColor, this.irradiance.rgb, this.sheenBRDF)\r\n );\r\n }\r\n if (that.clearcoat && ctx.env!.light.envLight.hasRadiance()) {\r\n this.$l.NoV = pb.clamp(pb.dot(this.data.ccNormal, this.viewVec), 0.0001, 1);\r\n this.$l.ggxLutSample = pb.clamp(\r\n pb.textureSampleLevel(\r\n this.zGGXLut,\r\n pb.clamp(pb.vec2(this.NoV, this.data.ccFactor.y), pb.vec2(0), pb.vec2(1)),\r\n 0\r\n ),\r\n pb.vec4(0),\r\n pb.vec4(1)\r\n );\r\n this.$l.f_ab = this.ggxLutSample.rg;\r\n this.$l.Fr = pb.sub(\r\n pb.max(pb.vec3(pb.sub(1, this.data.ccFactor.y)), this.data.f0.rgb),\r\n this.data.f0.rgb\r\n );\r\n this.$l.k_S = pb.add(this.data.f0.rgb, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5)));\r\n this.$l.radiance = ctx.env!.light.envLight.getRadiance(\r\n this,\r\n pb.reflect(pb.neg(this.viewVec), this.data.ccNormal),\r\n this.data.ccFactor.y\r\n );\r\n this.$l.FssEss = pb.add(pb.mul(this.k_S, this.f_ab.x), pb.vec3(this.f_ab.y));\r\n this.$l.ccSpecular = pb.mul(this.radiance, this.FssEss, this.data.specularWeight, this.occlusion);\r\n this.outColor = pb.add(this.outColor, pb.mul(this.ccSpecular, this.data.ccFactor.x));\r\n }\r\n }\r\n );\r\n if (outRoughness) {\r\n scope.$g[funcName](normal, viewVec, commonData, outColor, outRoughness);\r\n } else {\r\n scope.$g[funcName](normal, viewVec, commonData, outColor);\r\n }\r\n }\r\n } as unknown as T & { new (...args: any[]): IMixinPBRCommon };\r\n FEATURE_SHEEN = cls.defineFeature();\r\n FEATURE_CLEARCOAT = cls.defineFeature();\r\n FEATURE_TRANSMISSION = cls.defineFeature();\r\n FEATURE_IRIDESCENCE = cls.defineFeature();\r\n return cls;\r\n}\r\n"],"names":["mixinPBRCommon","BaseCls","pbrCommonMixed","S","applyMaterialMixins","mixinPBRBRDF","mixinTextureProps","FEATURE_SHEEN","FEATURE_CLEARCOAT","FEATURE_TRANSMISSION","FEATURE_IRIDESCENCE","EMISSIVE_COLOR_UNIFORM","defineInstanceUniform","EMISSIVE_STRENGTH_UNIFORM","cls","_f0","_emissiveColor","_emissiveStrength","_occlusionStrength","_sheenFactor","_clearcoatFactor","_transmissionFactor","_thicknessFactor","_attenuationColor","_attenuationDistance","_iridescenceFactor","Vector4","Vector3","zero","one","copyFrom","other","ior","transmissionFactor","thicknessFactor","attenuationColor","attenuationDistance","iridescenceFactor","iridescenceIor","iridescenceThicknessMin","iridescenceThicknessMax","occlusionStrength","emissiveColor","emissiveStrength","transmission","iridescence","clearcoat","clearcoatIntensity","clearcoatRoughnessFactor","sheen","sheenColorFactor","sheenRoughnessFactor","w","val","k","setXYZW","uniformChanged","equalsTo","set","x","y","z","featureUsed","useFeature","xyz","vertexShader","scope","needFragmentColor","drawContext","materialFlags","MaterialVaryingFlags","INSTANCING","$outputs","zEmissiveColor","getInstancedUniform","zEmissiveStrength","fragmentShader","pb","$builder","zF0","vec4","uniform","vec3","float","occlusionTexture","zOcclusionStrength","zSheenFactor","zClearcoatFactor","renderPass","type","RENDER_PASS_TYPE_LIGHT","zTransmissionFactor","zThicknessFactor","zAttenuationColor","zAttenuationDistance","zIridescenceFactor","drawEnvLight","zGGXLut","tex2D","needSceneColor","applyUniformValues","bindGroup","ctx","pass","setValue","setTexture","getGGXLUT","getF0","getCommonDatasStruct","defineStruct","getCommonData","albedo","normal","viewVec","TBN","that","funcName","func","mat3","$l","data","calculateCommonData","$return","$g","sheenColorTexture","sheenColor","mul","sampleSheenColorTexture","rgb","sheenRoughnessTexture","sheenRoughness","sampleSheenRoughnessTexture","a","sheenDFG","sheenAlbedoScaling","sub","max","r","g","b","clearcoatNormalTexture","ccNormal","sampleClearcoatNormalTexture","zz","normalize","ccNoV","clamp","dot","ccFactor","clearcoatIntensityTexture","sampleClearcoatIntensityTexture","clearcoatRoughnessTexture","sampleClearcoatRoughnessTexture","transmissionTexture","sampleTransmissionTexture","thicknessTexture","sampleThicknessTexture","iridescenceTexture","sampleIridescenceTexture","iridescenceThicknessTexture","mix","sampleIridescenceThicknessTexture","iridescenceFresnel","evalIridescence","f0","iridescenceF0","schlickToF0","getEmissiveColor","instancing","$inputs","getEmissiveStrength","calculateEmissiveColor","emissiveTexture","sampleEmissiveTexture","D_Charlie","NdotH","funcNameDCharlie","alphaG","invR","div","cos2h","sin2h","add","pow","Math","PI","V_Ashikhmin","NdotL","NdotV","funcNameVAshikhmin","getVolumeTransmissionRay","thickness","refractionVector","refract","neg","modelScale","getGlobalScope","getTransmissionSample","fragCoord","roughness","vec2","applyIorToRoughness","framebufferLod","log2","ShaderHelper","getSceneColorTextureSize","textureSampleLevel","getSceneColorTexture","getPunctualRadianceTransmission","lightDir","alphaRoughness","f90","baseColor","transmissionRoughness","mirrorL","L","h","D","distributionGGX","F","fresnelSchlick","V","visGGX","applyVolumeAttenuation","radiance","transmissionDistance","$if","equal","$else","attenuationCoefficient","log","transmittance","exp","getIBLVolumnRefraction","brdf","position","transmissionRay","transmissionRayLength","length","refractedRayExit","ndcPos","getViewProjectionMatrix","refractionCoords","xy","transmittedLight","attColor","specularColor","directLighting","lightColor","commonData","outColor","inout","H","NoH","NoL","NoV","greaterThan","VoH","schlickFresnel","specular","specularWeight","iridescenceFresnelMax","diffuseBRDF","diffuse","pointToLight","sheenD","sheenV","ccF0","fresnel0ToIor","fresnel0","sqrtF0","sqrt","iorToFresnel0v","transmittedIor","incidentIor","t","iorToFresnel0","evalSensitivity","OPD","shift","phase","pos","va","cos","f","VdotH","x2","x5","outsideIOR","eta2","cosTheta1","thinFilmThickness","baseF0","smoothStep","sinTheta2Sq","cosTheta2Sq","lessThan","cosTheta2","R0","R12","R21","T121","phi12","phi21","baseIOR","R1","R23","phi23","phi","R123","r123","Rs","C0","I","Cm","$for","int","Sm","m","indirectLighting","outRoughness","out","env","light","envLight","hasRadiance","hasIrradiance","envLightStrength","getEnvLightStrength","occlusionSample","sampleOcclusionTexture","occlusion","ggxLutSample","f_ab","rg","Fr","k_S","FssEss","specularFactor","getRadiance","reflect","irradiance","getIrradiance","iridescenceF0Max","mixedF0","Ems","F_avg","FmsEms","k_D","iblDiffuse","iblTransmission","worldPos","refl","sheenBRDF","ccSpecular","defineFeature"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common.js","sources":["../../../../src/material/mixins/pbr/common.ts"],"sourcesContent":["import type {\r\n BindGroup,\r\n PBFunctionScope,\r\n PBInsideFunctionScope,\r\n PBShaderExp,\r\n ShaderTypeFunc\r\n} from '@zephyr3d/device';\r\nimport type { MeshMaterial } from '../../meshmaterial';\r\nimport { applyMaterialMixins } from '../../meshmaterial';\r\nimport type { Immutable } from '@zephyr3d/base';\r\nimport { Vector3 } from '@zephyr3d/base';\r\nimport { Vector4 } from '@zephyr3d/base';\r\nimport type { DrawContext } from '../../../render';\r\nimport { getGGXLUT } from '../../../utility/textures/ggxlut';\r\nimport type { TextureMixinInstanceTypes } from '../texture';\r\nimport { mixinTextureProps } from '../texture';\r\nimport { ShaderHelper } from '../../shader/helper';\r\nimport { MaterialVaryingFlags, RENDER_PASS_TYPE_LIGHT } from '../../../values';\r\nimport type { IMixinPBRBRDF } from './brdf';\r\nimport { mixinPBRBRDF } from './brdf';\r\n\r\n/**\r\n * Interface for common PBR mixin\r\n *\r\n * @public\r\n */\r\nexport type IMixinPBRCommon = {\r\n ior: number;\r\n emissiveColor: Vector3;\r\n emissiveStrength: number;\r\n occlusionStrength: number;\r\n transmission: boolean;\r\n transmissionFactor: number;\r\n thicknessFactor: number;\r\n attenuationColor: Vector3;\r\n attenuationDistance: number;\r\n sheen: boolean;\r\n sheenColorFactor: Vector3;\r\n sheenRoughnessFactor: number;\r\n clearcoat: boolean;\r\n clearcoatIntensity: number;\r\n clearcoatRoughnessFactor: number;\r\n iridescence: boolean;\r\n iridescenceFactor: number;\r\n iridescenceIor: number;\r\n iridescenceThicknessMin: number;\r\n iridescenceThicknessMax: number;\r\n getCommonData(\r\n scope: PBInsideFunctionScope,\r\n albedo: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n TBN: PBShaderExp\r\n ): PBShaderExp;\r\n calculateCommonData(\r\n scope: PBInsideFunctionScope,\r\n albedo: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n TBN: PBShaderExp,\r\n data: PBShaderExp\r\n ): void;\r\n getCommonDatasStruct(scope: PBInsideFunctionScope): ShaderTypeFunc;\r\n calculateEmissiveColor(scope: PBInsideFunctionScope): PBShaderExp;\r\n getF0(scope: PBInsideFunctionScope): PBShaderExp;\r\n directLighting(\r\n scope: PBInsideFunctionScope,\r\n lightDir: PBShaderExp,\r\n lightColor: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n commonData: PBShaderExp,\r\n outColor: PBShaderExp\r\n ): void;\r\n indirectLighting(\r\n scope: PBInsideFunctionScope,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n commonData: PBShaderExp,\r\n outColor: PBShaderExp,\r\n outRoughness?: PBShaderExp\r\n ): void;\r\n} & TextureMixinInstanceTypes<\r\n [\r\n 'occlusion',\r\n 'emissive',\r\n 'sheenColor',\r\n 'sheenRoughness',\r\n 'clearcoatIntensity',\r\n 'clearcoatRoughness',\r\n 'clearcoatNormal',\r\n 'transmission',\r\n 'thickness',\r\n 'iridescence',\r\n 'iridescenceThickness'\r\n ]\r\n> &\r\n IMixinPBRBRDF;\r\n\r\n/**\r\n * PBR common stuff mixin\r\n * @param BaseCls - Class to mix in\r\n * @returns Mixed class\r\n *\r\n * @public\r\n */\r\nexport function mixinPBRCommon<T extends typeof MeshMaterial>(BaseCls: T) {\r\n if ((BaseCls as any).pbrCommonMixed) {\r\n return BaseCls as T & { new (...args: any[]): IMixinPBRCommon; FEATURE_TRANSMISSION: number };\r\n }\r\n const S = applyMaterialMixins(\r\n BaseCls,\r\n mixinPBRBRDF,\r\n mixinTextureProps('occlusion'),\r\n mixinTextureProps('emissive'),\r\n mixinTextureProps('sheenColor'),\r\n mixinTextureProps('sheenRoughness'),\r\n mixinTextureProps('clearcoatIntensity'),\r\n mixinTextureProps('clearcoatRoughness'),\r\n mixinTextureProps('clearcoatNormal'),\r\n mixinTextureProps('transmission'),\r\n mixinTextureProps('thickness'),\r\n mixinTextureProps('iridescence'),\r\n mixinTextureProps('iridescenceThickness')\r\n );\r\n let FEATURE_SHEEN = 0;\r\n let FEATURE_CLEARCOAT = 0;\r\n let FEATURE_TRANSMISSION = 0;\r\n let FEATURE_IRIDESCENCE = 0;\r\n\r\n const EMISSIVE_COLOR_UNIFORM = S.defineInstanceUniform('emissiveColor', 'rgb', 'EmissiveColor');\r\n const EMISSIVE_STRENGTH_UNIFORM = S.defineInstanceUniform('emissiveStrength', 'float', 'EmissiveStrength');\r\n\r\n const cls = class extends S {\r\n static readonly pbrCommonMixed = true;\r\n private readonly _f0: Vector4;\r\n private readonly _emissiveColor: Vector3;\r\n private _emissiveStrength: number;\r\n private _occlusionStrength: number;\r\n private readonly _sheenFactor: Vector4;\r\n private readonly _clearcoatFactor: Vector4;\r\n private _transmissionFactor: number;\r\n private _thicknessFactor: number;\r\n private readonly _attenuationColor: Vector3;\r\n private _attenuationDistance: number;\r\n private readonly _iridescenceFactor: Vector4;\r\n constructor() {\r\n super();\r\n this._f0 = new Vector4(0.04, 0.04, 0.04, 1.5);\r\n this._occlusionStrength = 1;\r\n this._emissiveColor = new Vector3(0, 0, 0);\r\n this._emissiveStrength = 1;\r\n this._sheenFactor = Vector4.zero();\r\n this._clearcoatFactor = new Vector4(0, 0, 1, 0);\r\n this._transmissionFactor = 0;\r\n this._thicknessFactor = 0;\r\n this._attenuationColor = Vector3.one();\r\n this._attenuationDistance = 99999;\r\n this._iridescenceFactor = new Vector4(0, 1.3, 100, 400);\r\n }\r\n copyFrom(other: this) {\r\n super.copyFrom(other);\r\n this.ior = other.ior;\r\n this.transmissionFactor = other.transmissionFactor;\r\n this.thicknessFactor = other.thicknessFactor;\r\n this.attenuationColor = other.attenuationColor;\r\n this.attenuationDistance = other.attenuationDistance;\r\n this.iridescenceFactor = other.iridescenceFactor;\r\n this.iridescenceIor = other.iridescenceIor;\r\n this.iridescenceThicknessMin = other.iridescenceThicknessMin;\r\n this.iridescenceThicknessMax = other.iridescenceThicknessMax;\r\n this.occlusionStrength = other.occlusionStrength;\r\n this.emissiveColor = other.emissiveColor;\r\n this.emissiveStrength = other.emissiveStrength;\r\n this.transmission = other.transmission;\r\n this.iridescence = other.iridescence;\r\n this.clearcoat = other.clearcoat;\r\n this.clearcoatIntensity = other.clearcoatIntensity;\r\n this.clearcoatRoughnessFactor = other.clearcoatRoughnessFactor;\r\n this.sheen = other.sheen;\r\n this.sheenColorFactor = other.sheenColorFactor;\r\n this.sheenRoughnessFactor = other.sheenRoughnessFactor;\r\n }\r\n get ior() {\r\n return this._f0.w;\r\n }\r\n set ior(val) {\r\n if (val !== this._f0.w) {\r\n let k = (val - 1) / (val + 1);\r\n k *= k;\r\n this._f0.setXYZW(k, k, k, val);\r\n this.uniformChanged();\r\n }\r\n }\r\n get transmissionFactor() {\r\n return this._transmissionFactor;\r\n }\r\n set transmissionFactor(val) {\r\n if (val !== this._transmissionFactor) {\r\n this._transmissionFactor = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get thicknessFactor() {\r\n return this._thicknessFactor;\r\n }\r\n set thicknessFactor(val) {\r\n if (this._thicknessFactor !== val) {\r\n this._thicknessFactor = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get attenuationColor(): Immutable<Vector3> {\r\n return this._attenuationColor;\r\n }\r\n set attenuationColor(val: Immutable<Vector3>) {\r\n if (!val.equalsTo(this._attenuationColor)) {\r\n this._attenuationColor.set(val);\r\n this.uniformChanged();\r\n }\r\n }\r\n get attenuationDistance() {\r\n return this._attenuationDistance;\r\n }\r\n set attenuationDistance(val) {\r\n if (val !== this._attenuationDistance) {\r\n this._attenuationDistance = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get iridescenceFactor() {\r\n return this._iridescenceFactor.x;\r\n }\r\n set iridescenceFactor(val) {\r\n if (this._iridescenceFactor.x !== val) {\r\n this._iridescenceFactor.x = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get iridescenceIor() {\r\n return this._iridescenceFactor.y;\r\n }\r\n set iridescenceIor(val) {\r\n if (this._iridescenceFactor.y !== val) {\r\n this._iridescenceFactor.y = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get iridescenceThicknessMin() {\r\n return this._iridescenceFactor.z;\r\n }\r\n set iridescenceThicknessMin(val) {\r\n if (this._iridescenceFactor.z !== val) {\r\n this._iridescenceFactor.z = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get iridescenceThicknessMax() {\r\n return this._iridescenceFactor.w;\r\n }\r\n set iridescenceThicknessMax(val) {\r\n if (this._iridescenceFactor.w !== val) {\r\n this._iridescenceFactor.w = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get occlusionStrength() {\r\n return this._occlusionStrength;\r\n }\r\n set occlusionStrength(val) {\r\n if (val !== this._occlusionStrength) {\r\n this._occlusionStrength = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get emissiveColor(): Immutable<Vector3> {\r\n return this._emissiveColor;\r\n }\r\n set emissiveColor(val: Immutable<Vector3>) {\r\n if (\r\n val.x !== this._emissiveColor.x ||\r\n val.y !== this._emissiveColor.y ||\r\n val.z !== this._emissiveColor.z\r\n ) {\r\n this._emissiveColor.set(val);\r\n this.uniformChanged();\r\n }\r\n }\r\n get emissiveStrength() {\r\n return this._emissiveStrength;\r\n }\r\n set emissiveStrength(val) {\r\n if (this._emissiveStrength !== val) {\r\n this._emissiveStrength = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get transmission() {\r\n return this.featureUsed<boolean>(FEATURE_TRANSMISSION);\r\n }\r\n set transmission(val) {\r\n this.useFeature(FEATURE_TRANSMISSION, !!val);\r\n }\r\n get iridescence() {\r\n return this.featureUsed<boolean>(FEATURE_IRIDESCENCE);\r\n }\r\n set iridescence(val) {\r\n this.useFeature(FEATURE_IRIDESCENCE, !!val);\r\n }\r\n get clearcoat() {\r\n return this.featureUsed<boolean>(FEATURE_CLEARCOAT);\r\n }\r\n set clearcoat(val) {\r\n this.useFeature(FEATURE_CLEARCOAT, !!val);\r\n }\r\n get clearcoatIntensity() {\r\n return this._clearcoatFactor.x;\r\n }\r\n set clearcoatIntensity(val) {\r\n if (val !== this._clearcoatFactor.x) {\r\n this._clearcoatFactor.x = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get clearcoatRoughnessFactor() {\r\n return this._clearcoatFactor.y;\r\n }\r\n set clearcoatRoughnessFactor(val) {\r\n if (val !== this._clearcoatFactor.y) {\r\n this._clearcoatFactor.y = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n get sheen() {\r\n return this.featureUsed<boolean>(FEATURE_SHEEN);\r\n }\r\n set sheen(val) {\r\n this.useFeature(FEATURE_SHEEN, !!val);\r\n }\r\n get sheenColorFactor(): Immutable<Vector3> {\r\n return this._sheenFactor.xyz();\r\n }\r\n set sheenColorFactor(val: Immutable<Vector3>) {\r\n if (val.x !== this._sheenFactor.x || val.y !== this._sheenFactor.y || val.z !== this._sheenFactor.z) {\r\n this._sheenFactor.x = val.x;\r\n this._sheenFactor.y = val.y;\r\n this._sheenFactor.z = val.z;\r\n this.uniformChanged();\r\n }\r\n }\r\n get sheenRoughnessFactor() {\r\n return this._sheenFactor.w;\r\n }\r\n set sheenRoughnessFactor(val) {\r\n if (val !== this._sheenFactor.w) {\r\n this._sheenFactor.w = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n vertexShader(scope: PBFunctionScope) {\r\n super.vertexShader(scope);\r\n if (this.needFragmentColor() && this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING) {\r\n scope.$outputs.zEmissiveColor = this.getInstancedUniform(scope, EMISSIVE_COLOR_UNIFORM);\r\n scope.$outputs.zEmissiveStrength = this.getInstancedUniform(scope, EMISSIVE_STRENGTH_UNIFORM);\r\n }\r\n }\r\n fragmentShader(scope: PBFunctionScope) {\r\n const pb = scope.$builder;\r\n super.fragmentShader(scope);\r\n if (this.needFragmentColor()) {\r\n scope.zF0 = pb.vec4().uniform(2);\r\n if (!(this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING)) {\r\n scope.zEmissiveColor = pb.vec3().uniform(2);\r\n scope.zEmissiveStrength = pb.float().uniform(2);\r\n }\r\n if (this.occlusionTexture) {\r\n scope.zOcclusionStrength = pb.float().uniform(2);\r\n }\r\n if (this.sheen) {\r\n scope.zSheenFactor = pb.vec4().uniform(2);\r\n }\r\n if (this.clearcoat) {\r\n scope.zClearcoatFactor = pb.vec4().uniform(2);\r\n }\r\n if (this.transmission && this.drawContext.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\r\n scope.zTransmissionFactor = pb.float().uniform(2);\r\n scope.zThicknessFactor = pb.float().uniform(2);\r\n scope.zAttenuationColor = pb.vec3().uniform(2);\r\n scope.zAttenuationDistance = pb.float().uniform(2);\r\n }\r\n if (this.iridescence) {\r\n scope.zIridescenceFactor = pb.vec4().uniform(2);\r\n }\r\n if (this.drawContext.drawEnvLight) {\r\n scope.zGGXLut = pb.tex2D().uniform(2);\r\n }\r\n }\r\n }\r\n needSceneColor() {\r\n return this.transmission;\r\n }\r\n applyUniformValues(bindGroup: BindGroup, ctx: DrawContext, pass: number) {\r\n super.applyUniformValues(bindGroup, ctx, pass);\r\n if (this.needFragmentColor(ctx)) {\r\n bindGroup.setValue('zF0', this._f0);\r\n if (!(ctx.materialFlags & MaterialVaryingFlags.INSTANCING)) {\r\n bindGroup.setValue('zEmissiveColor', this._emissiveColor);\r\n bindGroup.setValue('zEmissiveStrength', this._emissiveStrength);\r\n }\r\n if (this.occlusionTexture) {\r\n bindGroup.setValue('zOcclusionStrength', this._occlusionStrength);\r\n }\r\n if (this.sheen) {\r\n bindGroup.setValue('zSheenFactor', this._sheenFactor);\r\n }\r\n if (this.clearcoat) {\r\n bindGroup.setValue('zClearcoatFactor', this._clearcoatFactor);\r\n }\r\n if (this.transmission && ctx.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\r\n bindGroup.setValue('zTransmissionFactor', this._transmissionFactor);\r\n bindGroup.setValue('zThicknessFactor', this._thicknessFactor);\r\n bindGroup.setValue('zAttenuationColor', this._attenuationColor);\r\n bindGroup.setValue('zAttenuationDistance', this._attenuationDistance);\r\n }\r\n if (this.iridescence) {\r\n bindGroup.setValue('zIridescenceFactor', this._iridescenceFactor);\r\n }\r\n if (ctx.drawEnvLight) {\r\n bindGroup.setTexture('zGGXLut', getGGXLUT(1024));\r\n }\r\n }\r\n }\r\n getF0(scope: PBInsideFunctionScope) {\r\n return scope.zF0 as PBShaderExp;\r\n }\r\n getCommonDatasStruct(scope: PBInsideFunctionScope) {\r\n const pb = scope.$builder;\r\n return pb.defineStruct([\r\n pb.vec4('f0'),\r\n pb.vec3('f90'),\r\n pb.vec4('diffuse'),\r\n pb.float('metallic'),\r\n pb.float('roughness'),\r\n pb.float('specularWeight'),\r\n ...(this.sheen\r\n ? [pb.float('sheenAlbedoScaling'), pb.vec3('sheenColor'), pb.float('sheenRoughness')]\r\n : []),\r\n ...(this.clearcoat\r\n ? [pb.vec4('ccFactor'), pb.vec3('ccNormal'), pb.float('ccNoV'), pb.float('ccFresnel')]\r\n : []),\r\n ...(this.transmission && this.drawContext.renderPass!.type === RENDER_PASS_TYPE_LIGHT\r\n ? [\r\n pb.float('transmissionFactor'),\r\n pb.float('thicknessFactor'),\r\n pb.vec3('attenuationColor'),\r\n pb.float('attenuationDistance')\r\n ]\r\n : []),\r\n ...(this.iridescence\r\n ? [pb.vec4('iridescenceFactor'), pb.vec3('iridescenceFresnel'), pb.vec3('iridescenceF0')]\r\n : [])\r\n ]);\r\n }\r\n getCommonData(\r\n scope: PBInsideFunctionScope,\r\n albedo: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n TBN: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const funcName = 'Z_getCommonData';\r\n pb.func(\r\n funcName,\r\n [pb.vec4('albedo'), pb.vec3('normal'), pb.vec3('viewVec'), pb.mat3('TBN')],\r\n function () {\r\n this.$l.data = that.getCommonDatasStruct(this)();\r\n that.calculateCommonData(this, this.albedo, this.normal, this.viewVec, this.TBN, this.data);\r\n this.$return(this.data);\r\n }\r\n );\r\n return scope.$g[funcName](albedo, normal, viewVec, TBN) as PBShaderExp;\r\n }\r\n calculateCommonData(\r\n scope: PBInsideFunctionScope,\r\n albedo: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n TBN: PBShaderExp,\r\n data: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n if (this.sheen) {\r\n if (this.sheenColorTexture) {\r\n data.sheenColor = pb.mul(this.sampleSheenColorTexture(scope).rgb, scope.zSheenFactor.rgb);\r\n } else {\r\n data.sheenColor = scope.zSheenFactor.rgb;\r\n }\r\n if (this.sheenRoughnessTexture) {\r\n data.sheenRoughness = pb.mul(this.sampleSheenRoughnessTexture(scope).a, scope.zSheenFactor.a);\r\n } else {\r\n data.sheenRoughness = scope.zSheenFactor.a;\r\n }\r\n scope.$l.sheenDFG = 0.157;\r\n data.sheenAlbedoScaling = pb.sub(\r\n 1,\r\n pb.mul(pb.max(pb.max(data.sheenColor.r, data.sheenColor.g), data.sheenColor.b), scope.sheenDFG)\r\n );\r\n }\r\n if (this.clearcoat) {\r\n if (this.clearcoatNormalTexture) {\r\n const ccNormal = pb.mul(\r\n pb.sub(pb.mul(this.sampleClearcoatNormalTexture(scope).rgb, 2), pb.vec3(1)),\r\n pb.vec3(scope.zClearcoatFactor.zz, 1)\r\n );\r\n data.ccNormal = pb.normalize(pb.mul(TBN, ccNormal));\r\n } else {\r\n data.ccNormal = TBN[2];\r\n }\r\n data.ccNoV = pb.clamp(pb.dot(data.ccNormal, viewVec), 0.0001, 1);\r\n data.ccFactor = scope.zClearcoatFactor;\r\n if (this.clearcoatIntensityTexture) {\r\n data.ccFactor.x = pb.mul(data.ccFactor.x, this.sampleClearcoatIntensityTexture(scope).r);\r\n }\r\n if (this.clearcoatRoughnessTexture) {\r\n data.ccFactor.y = pb.clamp(\r\n pb.mul(data.ccFactor.y, this.sampleClearcoatRoughnessTexture(scope).g),\r\n 0,\r\n 1\r\n );\r\n }\r\n }\r\n if (this.transmission && this.drawContext.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\r\n if (this.transmissionTexture) {\r\n data.transmissionFactor = pb.mul(\r\n this.sampleTransmissionTexture(scope).r,\r\n scope.zTransmissionFactor\r\n );\r\n } else {\r\n data.transmissionFactor = scope.zTransmissionFactor;\r\n }\r\n if (this.thicknessTexture) {\r\n data.thicknessFactor = pb.mul(this.sampleThicknessTexture(scope).g, scope.zThicknessFactor);\r\n } else {\r\n data.thicknessFactor = scope.zThicknessFactor;\r\n }\r\n data.attenuationColor = scope.zAttenuationColor;\r\n data.attenuationDistance = scope.zAttenuationDistance;\r\n }\r\n if (this.iridescence) {\r\n data.iridescenceFactor = scope.zIridescenceFactor;\r\n if (this.iridescenceTexture) {\r\n data.iridescenceFactor.x = pb.mul(this.sampleIridescenceTexture(scope).r, data.iridescenceFactor.x);\r\n }\r\n if (this.iridescenceThicknessTexture) {\r\n data.iridescenceFactor.w = pb.mix(\r\n data.iridescenceFactor.z,\r\n data.iridescenceFactor.w,\r\n this.sampleIridescenceThicknessTexture(scope).g\r\n );\r\n }\r\n data.iridescenceFresnel = this.evalIridescence(\r\n scope,\r\n 1,\r\n data.iridescenceFactor.y,\r\n pb.clamp(pb.dot(normal, viewVec), 0, 1),\r\n data.iridescenceFactor.w,\r\n data.f0.rgb\r\n );\r\n data.iridescenceF0 = this.schlickToF0(\r\n scope,\r\n data.iridescenceFresnel,\r\n pb.vec3(1),\r\n pb.clamp(pb.dot(normal, viewVec), 0, 1)\r\n );\r\n }\r\n }\r\n getEmissiveColor(scope: PBInsideFunctionScope) {\r\n const instancing = !!(this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING);\r\n return (instancing ? scope.$inputs.zEmissiveColor : scope.zEmissiveColor) as PBShaderExp;\r\n }\r\n getEmissiveStrength(scope: PBInsideFunctionScope) {\r\n const instancing = !!(this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING);\r\n return (instancing ? scope.$inputs.zEmissiveStrength : scope.zEmissiveStrength) as PBShaderExp;\r\n }\r\n calculateEmissiveColor(scope: PBInsideFunctionScope) {\r\n const pb = scope.$builder;\r\n if (this.emissiveTexture) {\r\n return pb.mul(\r\n this.sampleEmissiveTexture(scope).rgb,\r\n this.getEmissiveColor(scope),\r\n this.getEmissiveStrength(scope)\r\n ) as PBShaderExp;\r\n } else {\r\n return pb.mul(this.getEmissiveColor(scope), this.getEmissiveStrength(scope)) as PBShaderExp;\r\n }\r\n }\r\n D_Charlie(scope: PBInsideFunctionScope, NdotH: PBShaderExp, sheenRoughness: PBShaderExp): PBShaderExp {\r\n const funcNameDCharlie = 'Z_DCharlie';\r\n const pb = scope.$builder;\r\n pb.func(funcNameDCharlie, [pb.float('NdotH'), pb.float('sheenRoughness')], function () {\r\n this.$l.alphaG = pb.mul(this.sheenRoughness, this.sheenRoughness);\r\n this.$l.invR = pb.div(1, this.alphaG);\r\n this.$l.cos2h = pb.mul(this.NdotH, this.NdotH);\r\n this.$l.sin2h = pb.max(pb.sub(1, this.cos2h), 0.0078125);\r\n this.$return(\r\n pb.div(pb.mul(pb.add(this.invR, 2), pb.pow(this.sin2h, pb.mul(this.invR, 0.5))), 2 * Math.PI)\r\n );\r\n });\r\n return scope.$g[funcNameDCharlie](NdotH, sheenRoughness) as PBShaderExp;\r\n }\r\n V_Ashikhmin(scope: PBInsideFunctionScope, NdotL: PBShaderExp, NdotV: PBShaderExp) {\r\n const funcNameVAshikhmin = 'Z_VAshikhmin';\r\n const pb = scope.$builder;\r\n pb.func(funcNameVAshikhmin, [pb.float('NdotL'), pb.float('NdotV')], function () {\r\n this.$return(\r\n pb.clamp(\r\n pb.div(1, pb.mul(pb.sub(pb.add(this.NdotL, this.NdotV), pb.mul(this.NdotL, this.NdotV)), 4)),\r\n 0,\r\n 1\r\n )\r\n );\r\n });\r\n return scope.$g[funcNameVAshikhmin](NdotL, NdotV) as PBShaderExp;\r\n }\r\n getVolumeTransmissionRay(\r\n scope: PBInsideFunctionScope,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n thickness: PBShaderExp,\r\n ior: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'getVolumeTransmissionRay';\r\n pb.func(\r\n funcName,\r\n [pb.vec3('normal'), pb.vec3('viewVec'), pb.float('thickness'), pb.float('ior')],\r\n function () {\r\n this.$l.refractionVector = pb.refract(pb.neg(this.viewVec), this.normal, pb.div(1, this.ior));\r\n this.$return(pb.mul(this.refractionVector, this.$inputs.modelScale, this.thickness));\r\n }\r\n );\r\n return pb.getGlobalScope()[funcName](normal, viewVec, thickness, ior) as PBShaderExp;\r\n }\r\n getTransmissionSample(\r\n scope: PBInsideFunctionScope,\r\n fragCoord: PBShaderExp,\r\n roughness: PBShaderExp,\r\n ior: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'getTransmissionSample';\r\n pb.func(funcName, [pb.vec2('fragCoord'), pb.float('roughness'), pb.float('ior')], function () {\r\n this.$l.applyIorToRoughness = pb.mul(\r\n this.roughness,\r\n pb.clamp(pb.sub(pb.mul(this.ior, 2), 2), 0.0, 1.0)\r\n );\r\n this.$l.framebufferLod = pb.mul(\r\n pb.log2(ShaderHelper.getSceneColorTextureSize(this).x),\r\n this.applyIorToRoughness\r\n );\r\n this.$return(\r\n pb.textureSampleLevel(ShaderHelper.getSceneColorTexture(this), this.fragCoord, this.framebufferLod)\r\n .rgb\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](fragCoord, roughness, ior) as PBShaderExp;\r\n }\r\n getPunctualRadianceTransmission(\r\n scope: PBInsideFunctionScope,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n lightDir: PBShaderExp,\r\n alphaRoughness: PBShaderExp,\r\n f0: PBShaderExp,\r\n f90: PBShaderExp,\r\n baseColor: PBShaderExp,\r\n ior: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const funcName = 'getPunctualRadianceTransmission';\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec3('normal'),\r\n pb.vec3('viewVec'),\r\n pb.vec3('L'),\r\n pb.float('alphaRoughness'),\r\n pb.vec3('f0'),\r\n pb.vec3('f90'),\r\n pb.vec3('baseColor'),\r\n pb.float('ior')\r\n ],\r\n function () {\r\n this.$l.transmissionRoughness = pb.mul(\r\n this.alphaRoughness,\r\n pb.clamp(pb.sub(pb.mul(this.ior, 2), 2), 0.0, 1.0)\r\n );\r\n this.$l.mirrorL = pb.normalize(\r\n pb.add(this.L, pb.mul(this.normal, pb.dot(pb.neg(this.L), this.normal), 2))\r\n );\r\n this.$l.h = pb.normalize(pb.add(this.viewVec, this.mirrorL));\r\n this.$l.D = that.distributionGGX(\r\n this,\r\n pb.clamp(pb.dot(this.normal, this.h), 0, 1),\r\n this.transmissionRoughness\r\n );\r\n this.$l.F = that.fresnelSchlick(\r\n this,\r\n pb.clamp(pb.dot(this.viewVec, this.h), 0, 1),\r\n this.f0,\r\n this.f90\r\n );\r\n this.$l.V = that.visGGX(\r\n this,\r\n pb.clamp(pb.dot(this.normal, this.viewVec), 0, 1),\r\n pb.clamp(pb.dot(this.normal, this.mirrorL), 0, 1),\r\n this.transmissionRoughness\r\n );\r\n this.$return(pb.mul(pb.sub(pb.vec3(1), this.F), this.baseColor, this.D, this.V));\r\n }\r\n );\r\n return pb\r\n .getGlobalScope()\r\n [funcName](normal, viewVec, lightDir, alphaRoughness, f0, f90, baseColor, ior) as PBShaderExp;\r\n }\r\n applyVolumeAttenuation(\r\n scope: PBInsideFunctionScope,\r\n radiance: PBShaderExp,\r\n transmissionDistance: PBShaderExp,\r\n attenuationColor: PBShaderExp,\r\n attenuationDistance: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'applyVolumeAttenuation';\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec3('radiance'),\r\n pb.float('transmissionDistance'),\r\n pb.vec3('attenuationColor'),\r\n pb.float('attenuationDistance')\r\n ],\r\n function () {\r\n this.$if(pb.equal(this.attenuationDistance, 0), function () {\r\n this.$return(this.radiance);\r\n }).$else(function () {\r\n this.$l.attenuationCoefficient = pb.div(\r\n pb.neg(pb.log(this.attenuationColor)),\r\n this.attenuationDistance\r\n );\r\n this.$l.transmittance = pb.exp(\r\n pb.mul(pb.neg(this.attenuationCoefficient), this.transmissionDistance)\r\n );\r\n this.$return(pb.mul(this.radiance, this.transmittance));\r\n });\r\n }\r\n );\r\n return pb\r\n .getGlobalScope()\r\n [funcName](radiance, transmissionDistance, attenuationColor, attenuationDistance) as PBShaderExp;\r\n }\r\n getIBLVolumnRefraction(\r\n scope: PBInsideFunctionScope,\r\n brdf: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n roughness: PBShaderExp,\r\n baseColor: PBShaderExp,\r\n f0: PBShaderExp,\r\n f90: PBShaderExp,\r\n position: PBShaderExp,\r\n ior: PBShaderExp,\r\n thickness: PBShaderExp,\r\n attenuationColor: PBShaderExp,\r\n attenuationDistance: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'getIBLVolumeRefraction';\r\n const that = this;\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec2('brdf'),\r\n pb.vec3('normal'),\r\n pb.vec3('viewVec'),\r\n pb.float('roughness'),\r\n pb.vec3('baseColor'),\r\n pb.vec3('f0'),\r\n pb.vec3('f90'),\r\n pb.vec3('position'),\r\n pb.float('ior'),\r\n pb.float('thickness'),\r\n pb.vec3('attenuationColor'),\r\n pb.float('attenuationDistance')\r\n ],\r\n function () {\r\n this.$l.transmissionRay = that.getVolumeTransmissionRay(\r\n this,\r\n this.normal,\r\n this.viewVec,\r\n this.thickness,\r\n this.ior\r\n );\r\n this.$l.transmissionRayLength = pb.length(this.transmissionRay);\r\n this.$l.refractedRayExit = pb.add(this.position, this.transmissionRay);\r\n this.$l.ndcPos = pb.mul(\r\n ShaderHelper.getViewProjectionMatrix(this),\r\n pb.vec4(this.refractedRayExit, 1)\r\n );\r\n this.$l.refractionCoords = pb.add(pb.mul(pb.div(this.ndcPos.xy, this.ndcPos.w), 0.5), pb.vec2(0.5));\r\n this.$l.transmittedLight = that.getTransmissionSample(\r\n this,\r\n this.refractionCoords,\r\n this.roughness,\r\n this.ior\r\n );\r\n this.$l.attColor = that.applyVolumeAttenuation(\r\n this,\r\n this.transmittedLight,\r\n this.transmissionRayLength,\r\n this.attenuationColor,\r\n this.attenuationDistance\r\n );\r\n this.$l.specularColor = pb.add(pb.mul(this.f0, this.brdf.x), pb.mul(this.f90, this.brdf.y));\r\n this.$return(pb.mul(pb.sub(pb.vec3(1), this.specularColor), this.attColor, this.baseColor));\r\n }\r\n );\r\n return pb\r\n .getGlobalScope()\r\n [\r\n funcName\r\n ](brdf, normal, viewVec, roughness, baseColor, f0, f90, position, ior, thickness, attenuationColor, attenuationDistance) as PBShaderExp;\r\n }\r\n directLighting(\r\n scope: PBInsideFunctionScope,\r\n lightDir: PBShaderExp,\r\n lightColor: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n commonData: PBShaderExp,\r\n outColor: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const funcName = 'Z_PBRDirectLighting';\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec3('L'),\r\n pb.vec3('lightColor'),\r\n pb.vec3('normal'),\r\n pb.vec3('viewVec'),\r\n that.getCommonDatasStruct(scope)('data'),\r\n pb.vec3('outColor').inout()\r\n ],\r\n function () {\r\n this.$l.H = pb.normalize(pb.add(this.viewVec, this.L));\r\n this.$l.NoH = pb.clamp(pb.dot(this.normal, this.H), 0, 1);\r\n this.$l.NoL = pb.clamp(pb.dot(this.normal, this.L), 0, 1);\r\n this.$l.NoV = pb.clamp(pb.dot(this.normal, this.viewVec), 0, 1);\r\n this.$if(pb.greaterThan(this.NoL, 0), function () {\r\n this.$l.VoH = pb.clamp(pb.dot(this.viewVec, this.H), 0, 1);\r\n this.$l.schlickFresnel = that.fresnelSchlick(\r\n this,\r\n this.VoH,\r\n pb.mul(this.data.f0.rgb, pb.mix(this.data.specularWeight, 1, this.data.metallic)),\r\n this.data.f90\r\n );\r\n if (that.iridescence) {\r\n this.$l.F = pb.mix(\r\n this.schlickFresnel,\r\n this.data.iridescenceFresnel,\r\n this.data.iridescenceFactor.x\r\n );\r\n } else {\r\n this.$l.F = this.schlickFresnel;\r\n }\r\n this.$l.alphaRoughness = pb.mul(this.data.roughness, this.data.roughness);\r\n this.$l.D = that.distributionGGX(this, this.NoH, this.alphaRoughness);\r\n this.$l.V = that.visGGX(this, this.NoV, this.NoL, this.alphaRoughness);\r\n this.$l.specular = pb.mul(this.lightColor, this.D, this.V, this.F);\r\n if (that.sheen) {\r\n this.specular = pb.mul(this.specular, this.data.sheenAlbedoScaling);\r\n }\r\n this.outColor = pb.add(this.outColor, this.specular);\r\n if (that.iridescence) {\r\n this.$l.iridescenceFresnelMax = pb.vec3(\r\n pb.max(\r\n pb.max(this.data.iridescenceFresnel.r, this.data.iridescenceFresnel.g),\r\n this.data.iridescenceFresnel.b\r\n )\r\n );\r\n this.F = pb.mix(this.schlickFresnel, this.iridescenceFresnelMax, this.data.iridescenceFactor.x);\r\n }\r\n this.$l.diffuseBRDF = pb.mul(pb.sub(pb.vec3(1), this.F), pb.div(this.data.diffuse.rgb, Math.PI));\r\n this.$l.diffuse = pb.mul(this.lightColor, pb.max(this.diffuseBRDF, pb.vec3(0)));\r\n if (that.transmission && that.drawContext.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\r\n this.$l.transmissionRay = that.getVolumeTransmissionRay(\r\n this,\r\n this.normal,\r\n this.viewVec,\r\n this.data.thicknessFactor,\r\n this.data.f0.a\r\n );\r\n this.$l.pointToLight = pb.normalize(pb.sub(this.L, this.transmissionRay));\r\n this.$l.transmittedLight = pb.mul(\r\n this.lightColor,\r\n that.getPunctualRadianceTransmission(\r\n this,\r\n this.normal,\r\n this.viewVec,\r\n this.pointToLight,\r\n this.alphaRoughness,\r\n this.data.f0.rgb,\r\n this.data.f90.rgb,\r\n this.data.diffuse.rgb,\r\n this.data.f0.a\r\n )\r\n );\r\n this.transmittedLight = that.applyVolumeAttenuation(\r\n this,\r\n this.transmittedLight,\r\n pb.length(this.transmissionRay),\r\n this.data.attenuationColor,\r\n this.data.attenuationDistance\r\n );\r\n this.diffuse = pb.mix(this.diffuse, this.transmittedLight, this.data.transmissionFactor);\r\n }\r\n if (that.sheen) {\r\n this.diffuse = pb.mul(this.diffuse, this.data.sheenAlbedoScaling);\r\n }\r\n this.outColor = pb.add(this.outColor, this.diffuse);\r\n if (that.sheen) {\r\n this.$l.sheenD = that.D_Charlie(this, this.NoH, this.data.sheenRoughness);\r\n this.$l.sheenV = that.V_Ashikhmin(this, this.NoL, this.NoV);\r\n this.outColor = pb.add(\r\n this.outColor,\r\n pb.mul(this.lightColor, this.data.sheenColor, this.sheenD, this.sheenV)\r\n );\r\n }\r\n if (that.clearcoat) {\r\n this.alphaRoughness = pb.mul(this.data.ccFactor.y, this.data.ccFactor.y);\r\n this.NoH = pb.clamp(pb.dot(this.data.ccNormal, this.H), 0, 1);\r\n this.NoL = pb.clamp(pb.dot(this.data.ccNormal, this.L), 0, 1);\r\n this.ccF0 = pb.vec3(0.04);\r\n this.F = that.fresnelSchlick(this, this.VoH, this.ccF0, pb.vec3(1));\r\n this.D = that.distributionGGX(this, this.NoH, this.alphaRoughness);\r\n this.V = that.visGGX(this, this.data.ccNoV, this.NoL, this.alphaRoughness);\r\n this.outColor = pb.add(\r\n pb.mul(this.outColor, pb.sub(1, pb.mul(this.F, this.data.ccFactor.x))),\r\n pb.mul(this.D, this.V, this.F, this.data.ccFactor.x)\r\n );\r\n }\r\n });\r\n }\r\n );\r\n scope.$g[funcName](lightDir, lightColor, normal, viewVec, commonData, outColor);\r\n }\r\n fresnel0ToIor(scope: PBInsideFunctionScope, fresnel0: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_fresnel0ToIor';\r\n pb.func(funcName, [pb.vec3('fresnel0')], function () {\r\n this.$l.sqrtF0 = pb.sqrt(this.fresnel0);\r\n this.$return(pb.div(pb.add(this.sqrtF0, pb.vec3(1)), pb.sub(pb.vec3(1), this.sqrtF0)));\r\n });\r\n return pb.getGlobalScope()[funcName](fresnel0) as PBShaderExp;\r\n }\r\n iorToFresnel0v(scope: PBInsideFunctionScope, transmittedIor: PBShaderExp, incidentIor: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_iorToFresnel0v';\r\n pb.func(funcName, [pb.vec3('transmittedIor'), pb.float('incidentIor')], function () {\r\n this.$l.t = pb.div(\r\n pb.sub(this.transmittedIor, pb.vec3(this.incidentIor)),\r\n pb.add(this.transmittedIor, pb.vec3(this.incidentIor))\r\n );\r\n this.$return(pb.mul(this.t, this.t));\r\n });\r\n return pb.getGlobalScope()[funcName](transmittedIor, incidentIor) as PBShaderExp;\r\n }\r\n iorToFresnel0(scope: PBInsideFunctionScope, transmittedIor: PBShaderExp, incidentIor: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_iorToFresnel0';\r\n pb.func(funcName, [pb.float('transmittedIor'), pb.float('incidentIor')], function () {\r\n this.$l.t = pb.div(\r\n pb.sub(this.transmittedIor, this.incidentIor),\r\n pb.add(this.transmittedIor, this.incidentIor)\r\n );\r\n this.$return(pb.mul(this.t, this.t));\r\n });\r\n return pb.getGlobalScope()[funcName](transmittedIor, incidentIor) as PBShaderExp;\r\n }\r\n evalSensitivity(scope: PBInsideFunctionScope, OPD: PBShaderExp, shift: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_evalSensitivity';\r\n pb.func(funcName, [pb.float('OPD'), pb.vec3('shift')], function () {\r\n this.$l.phase = pb.mul(Math.PI * 2, this.OPD, 1e-9);\r\n this.$l.val = pb.vec3(5.4856e-13, 4.4201e-13, 5.2481e-13);\r\n this.$l.pos = pb.vec3(1.681e6, 1.7953e6, 2.2084e6);\r\n this.$l.va = pb.vec3(4.3278e9, 9.3046e9, 6.6121e9);\r\n this.$l.xyz = pb.mul(\r\n this.val,\r\n pb.sqrt(pb.mul(Math.PI * 2, this.va)),\r\n pb.cos(pb.add(pb.mul(this.pos, this.phase), this.shift)),\r\n pb.exp(pb.neg(pb.mul(this.phase, this.phase, this.va)))\r\n );\r\n this.xyz.x = pb.add(\r\n this.xyz.x,\r\n pb.mul(\r\n 9.747e-14,\r\n Math.sqrt(Math.PI * 2 * 4.5282e9),\r\n pb.cos(pb.add(pb.mul(this.phase, 2.2399e6), this.shift.x)),\r\n pb.exp(pb.mul(-4.5282e9, this.phase, this.phase))\r\n )\r\n );\r\n this.xyz = pb.div(this.xyz, 1.0685e-7);\r\n this.$return(\r\n pb.mul(\r\n pb.mat3(\r\n 3.2404542,\r\n -0.969266,\r\n 0.0556434,\r\n -1.5371385,\r\n 1.8760108,\r\n -0.2040259,\r\n -0.4985314,\r\n 0.041556,\r\n 1.0572252\r\n ),\r\n this.xyz\r\n )\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](OPD, shift) as PBShaderExp;\r\n }\r\n schlickToF0(scope: PBInsideFunctionScope, f: PBShaderExp, f90: PBShaderExp, VdotH: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_schlickToF0';\r\n pb.func(funcName, [pb.vec3('f'), pb.vec3('f90'), pb.float('VdotH')], function () {\r\n this.$l.x = pb.clamp(pb.sub(1, this.VdotH), 0, 1);\r\n this.$l.x2 = pb.mul(this.x, this.x);\r\n this.$l.x5 = pb.clamp(pb.mul(this.x, this.x2, this.x2), 0, 0.9999);\r\n this.$return(pb.div(pb.sub(this.f, pb.mul(this.f90, this.x5)), pb.sub(1, this.x5)));\r\n });\r\n return pb.getGlobalScope()[funcName](f, f90, VdotH) as PBShaderExp;\r\n }\r\n evalIridescence(\r\n scope: PBInsideFunctionScope,\r\n outsideIOR: PBShaderExp | number,\r\n eta2: PBShaderExp,\r\n cosTheta1: PBShaderExp,\r\n thinFilmThickness: PBShaderExp,\r\n baseF0: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const funcName = 'Z_evalIridescence';\r\n pb.func(\r\n funcName,\r\n [\r\n pb.float('outsideIOR'),\r\n pb.float('eta2'),\r\n pb.float('cosTheta1'),\r\n pb.float('thinFilmThickness'),\r\n pb.vec3('baseF0')\r\n ],\r\n function () {\r\n this.$l.iridescenceIor = pb.mix(\r\n this.outsideIOR,\r\n this.eta2,\r\n pb.smoothStep(0, 0.03, this.thinFilmThickness)\r\n );\r\n this.$l.t = pb.div(this.outsideIOR, this.iridescenceIor);\r\n this.$l.sinTheta2Sq = pb.mul(this.t, this.t, pb.sub(1, pb.mul(this.cosTheta1, this.cosTheta1)));\r\n this.$l.cosTheta2Sq = pb.sub(1, this.sinTheta2Sq);\r\n this.$if(pb.lessThan(this.cosTheta2Sq, 0), function () {\r\n this.$return(pb.vec3(1));\r\n });\r\n this.$l.cosTheta2 = pb.sqrt(this.cosTheta2Sq);\r\n\r\n this.$l.R0 = that.iorToFresnel0(this, this.iridescenceIor, this.outsideIOR);\r\n this.$l.R12 = that.fresnelSchlick(this, this.cosTheta1, pb.vec3(this.R0), pb.vec3(1)).x;\r\n this.$l.R21 = this.R12;\r\n this.$l.T121 = pb.sub(1, this.R12);\r\n this.$l.phi12 = pb.float(0);\r\n this.$if(pb.lessThan(this.iridescenceIor, this.outsideIOR), function () {\r\n this.phi12 = Math.PI;\r\n });\r\n this.$l.phi21 = pb.sub(Math.PI, this.phi12);\r\n\r\n this.$l.baseIOR = that.fresnel0ToIor(this, pb.clamp(this.baseF0, pb.vec3(0), pb.vec3(0.9999)));\r\n this.$l.R1 = that.iorToFresnel0v(this, this.baseIOR, this.iridescenceIor);\r\n this.$l.R23 = that.fresnelSchlick(this, this.cosTheta2, this.R1, pb.vec3(1));\r\n this.$l.phi23 = pb.vec3(0);\r\n this.$if(pb.lessThan(this.baseIOR.x, this.iridescenceIor), function () {\r\n this.phi23.x = Math.PI;\r\n });\r\n this.$if(pb.lessThan(this.baseIOR.y, this.iridescenceIor), function () {\r\n this.phi23.y = Math.PI;\r\n });\r\n this.$if(pb.lessThan(this.baseIOR.z, this.iridescenceIor), function () {\r\n this.phi23.z = Math.PI;\r\n });\r\n\r\n this.$l.OPD = pb.mul(this.iridescenceIor, this.thinFilmThickness, this.cosTheta2, 2);\r\n this.$l.phi = pb.add(pb.vec3(this.phi21), this.phi23);\r\n\r\n this.$l.R123 = pb.clamp(pb.mul(this.R12, this.R23), pb.vec3(1e-5), pb.vec3(0.9999));\r\n this.$l.r123 = pb.sqrt(this.R123);\r\n this.$l.Rs = pb.div(pb.mul(this.T121, this.T121, this.R23), pb.sub(pb.vec3(1), this.R123));\r\n\r\n this.$l.C0 = pb.add(pb.vec3(this.R12), this.Rs);\r\n this.$l.I = this.C0;\r\n\r\n this.$l.Cm = pb.sub(this.Rs, pb.vec3(this.T121));\r\n this.$for(pb.int('m'), 1, 3, function () {\r\n this.Cm = pb.mul(this.Cm, this.r123);\r\n this.$l.Sm = pb.mul(\r\n that.evalSensitivity(\r\n this,\r\n pb.mul(this.OPD, pb.float(this.m)),\r\n pb.mul(this.phi, pb.float(this.m))\r\n ),\r\n 2\r\n );\r\n this.I = pb.add(this.I, pb.mul(this.Cm, this.Sm));\r\n });\r\n this.$return(pb.max(this.I, pb.vec3(0)));\r\n }\r\n );\r\n return pb\r\n .getGlobalScope()\r\n [funcName](outsideIOR, eta2, cosTheta1, thinFilmThickness, baseF0) as PBShaderExp;\r\n }\r\n indirectLighting(\r\n scope: PBInsideFunctionScope,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n commonData: PBShaderExp,\r\n outColor: PBShaderExp,\r\n outRoughness?: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const ctx = that.drawContext;\r\n const funcName = 'Z_PBRIndirectLighting';\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec3('normal'),\r\n pb.vec3('viewVec'),\r\n that.getCommonDatasStruct(scope)('data'),\r\n pb.vec3('outColor').inout(),\r\n ...(outRoughness ? [pb.vec4('outRoughness').out()] : [])\r\n ],\r\n function () {\r\n if (\r\n !ctx.drawEnvLight ||\r\n (!ctx.env!.light.envLight.hasRadiance() && !ctx.env!.light.envLight.hasIrradiance())\r\n ) {\r\n return;\r\n }\r\n const envLightStrength = ShaderHelper.getEnvLightStrength(this);\r\n this.$l.specWeight = pb.mix(this.data.specularWeight, 1.0, this.data.metallic);\r\n if (that.occlusionTexture) {\r\n const occlusionSample = that.sampleOcclusionTexture(this).r;\r\n this.$l.occlusion = pb.mul(\r\n pb.add(pb.mul(this.zOcclusionStrength, pb.sub(occlusionSample, 1)), 1),\r\n envLightStrength\r\n );\r\n } else {\r\n this.$l.occlusion = envLightStrength;\r\n }\r\n this.$l.NoV = pb.clamp(pb.dot(this.normal, this.viewVec), 0.0001, 1);\r\n this.$l.ggxLutSample = pb.clamp(\r\n pb.textureSampleLevel(\r\n this.zGGXLut,\r\n pb.clamp(pb.vec2(this.NoV, this.data.roughness), pb.vec2(0), pb.vec2(1)),\r\n 0\r\n ),\r\n pb.vec4(0),\r\n pb.vec4(1)\r\n );\r\n this.$l.f_ab = this.ggxLutSample.rg;\r\n this.$l.F0 = pb.mul(this.data.f0.rgb, this.specWeight);\r\n this.$l.Fr = pb.sub(pb.max(pb.vec3(pb.sub(1, this.data.roughness)), this.F0), this.F0);\r\n if (that.iridescence) {\r\n this.$l.k_S = pb.mix(\r\n pb.add(this.F0, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5))),\r\n this.data.iridescenceFresnel,\r\n this.data.iridescenceFactor.x\r\n );\r\n } else {\r\n this.$l.k_S = pb.add(this.F0, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5)));\r\n }\r\n if (outRoughness || ctx.env!.light.envLight.hasRadiance()) {\r\n this.$l.FssEss = pb.add(pb.mul(this.k_S, this.f_ab.x), pb.vec3(this.f_ab.y));\r\n this.$l.specularFactor = pb.mul(this.FssEss, this.occlusion);\r\n if (that.sheen) {\r\n this.specularFactor = pb.mul(this.specularFactor, this.data.sheenAlbedoScaling);\r\n }\r\n if (outRoughness) {\r\n this.outRoughness = pb.vec4(this.specularFactor /*this.data.f0.rgb*/, this.data.roughness);\r\n } else if (ctx.env!.light.envLight.hasRadiance()) {\r\n this.$l.radiance = ctx.env!.light.envLight.getRadiance(\r\n this,\r\n pb.reflect(pb.neg(this.viewVec), this.normal),\r\n this.data.roughness\r\n );\r\n this.outColor = pb.add(this.outColor, pb.mul(this.radiance, this.specularFactor));\r\n }\r\n }\r\n if (ctx.env!.light.envLight.hasIrradiance()) {\r\n this.$l.irradiance = ctx.env!.light.envLight.getIrradiance(this, this.normal);\r\n if (that.iridescence) {\r\n this.$l.iridescenceF0Max = pb.vec3(\r\n pb.max(\r\n pb.max(this.data.iridescenceF0.r, this.data.iridescenceF0.g),\r\n this.data.iridescenceF0.b\r\n )\r\n );\r\n this.$l.mixedF0 = pb.mix(this.F0, this.iridescenceF0Max, this.data.iridescenceFactor.x);\r\n this.Fr = pb.sub(pb.max(pb.vec3(pb.sub(1, this.data.roughness)), this.mixedF0), this.mixedF0);\r\n this.k_S = pb.add(this.mixedF0, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5)));\r\n } else {\r\n this.$l.mixedF0 = this.F0;\r\n }\r\n this.$l.FssEss = pb.add(pb.mul(this.k_S, this.f_ab.x), pb.vec3(this.f_ab.y));\r\n this.$l.Ems = pb.sub(1, pb.add(this.f_ab.x, this.f_ab.y));\r\n this.$l.F_avg = pb.add(this.mixedF0, pb.div(pb.sub(pb.vec3(1), this.mixedF0), 21));\r\n this.$l.FmsEms = pb.div(\r\n pb.mul(this.FssEss, this.F_avg, this.Ems),\r\n pb.sub(pb.vec3(1), pb.mul(this.F_avg, this.Ems))\r\n );\r\n this.$l.k_D = pb.mul(this.data.diffuse.rgb, pb.add(pb.sub(pb.vec3(1), this.FssEss), this.FmsEms));\r\n this.$l.iblDiffuse = pb.mul(\r\n pb.add(this.FmsEms, this.k_D),\r\n pb.div(this.irradiance, Math.PI),\r\n this.occlusion\r\n );\r\n if (that.sheen) {\r\n this.iblDiffuse = pb.mul(this.iblDiffuse, this.data.sheenAlbedoScaling);\r\n }\r\n if (that.transmission && that.drawContext.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\r\n this.$l.iblTransmission = that.getIBLVolumnRefraction(\r\n this,\r\n this.ggxLutSample.rg,\r\n this.normal,\r\n this.viewVec,\r\n this.data.roughness,\r\n this.data.diffuse.rgb,\r\n this.data.f0.rgb,\r\n this.data.f90,\r\n this.$inputs.worldPos,\r\n this.data.f0.a,\r\n this.data.thicknessFactor,\r\n this.data.attenuationColor,\r\n this.data.attenuationDistance\r\n );\r\n this.iblDiffuse = pb.mix(this.iblDiffuse, this.iblTransmission, this.data.transmissionFactor);\r\n }\r\n this.outColor = pb.add(this.outColor, this.iblDiffuse);\r\n }\r\n if (that.sheen && ctx.env!.light.envLight.hasIrradiance()) {\r\n this.$l.refl = pb.reflect(pb.neg(this.viewVec), this.normal);\r\n this.$l.sheenBRDF = pb.clamp(\r\n pb.textureSampleLevel(\r\n this.zGGXLut,\r\n pb.clamp(pb.vec2(this.NoV, this.data.sheenRoughness), pb.vec2(0), pb.vec2(1)),\r\n 0\r\n ),\r\n pb.vec4(0),\r\n pb.vec4(1)\r\n ).b;\r\n this.outColor = pb.add(\r\n this.outColor,\r\n pb.mul(this.data.sheenColor, this.irradiance.rgb, this.sheenBRDF)\r\n );\r\n }\r\n if (that.clearcoat && ctx.env!.light.envLight.hasRadiance()) {\r\n this.$l.NoV = pb.clamp(pb.dot(this.data.ccNormal, this.viewVec), 0.0001, 1);\r\n this.$l.ggxLutSample = pb.clamp(\r\n pb.textureSampleLevel(\r\n this.zGGXLut,\r\n pb.clamp(pb.vec2(this.NoV, this.data.ccFactor.y), pb.vec2(0), pb.vec2(1)),\r\n 0\r\n ),\r\n pb.vec4(0),\r\n pb.vec4(1)\r\n );\r\n this.$l.f_ab = this.ggxLutSample.rg;\r\n this.$l.ccF0 = pb.vec3(0.04);\r\n this.$l.Fr = pb.sub(pb.max(pb.vec3(pb.sub(1, this.data.ccFactor.y)), this.ccF0), this.ccF0);\r\n this.$l.k_S = pb.add(this.ccF0, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5)));\r\n this.$l.radiance = ctx.env!.light.envLight.getRadiance(\r\n this,\r\n pb.reflect(pb.neg(this.viewVec), this.data.ccNormal),\r\n this.data.ccFactor.y\r\n );\r\n this.$l.FssEss = pb.add(pb.mul(this.k_S, this.f_ab.x), pb.vec3(this.f_ab.y));\r\n this.$l.ccSpecular = pb.mul(this.radiance, this.FssEss, this.occlusion);\r\n this.outColor = pb.add(\r\n pb.mul(this.outColor, pb.sub(pb.vec3(1), pb.mul(this.FssEss, this.data.ccFactor.x))),\r\n pb.mul(this.ccSpecular, this.data.ccFactor.x)\r\n );\r\n }\r\n }\r\n );\r\n if (outRoughness) {\r\n scope.$g[funcName](normal, viewVec, commonData, outColor, outRoughness);\r\n } else {\r\n scope.$g[funcName](normal, viewVec, commonData, outColor);\r\n }\r\n }\r\n } as unknown as T & { new (...args: any[]): IMixinPBRCommon };\r\n FEATURE_SHEEN = cls.defineFeature();\r\n FEATURE_CLEARCOAT = cls.defineFeature();\r\n FEATURE_TRANSMISSION = cls.defineFeature();\r\n FEATURE_IRIDESCENCE = cls.defineFeature();\r\n return cls;\r\n}\r\n"],"names":["mixinPBRCommon","BaseCls","pbrCommonMixed","S","applyMaterialMixins","mixinPBRBRDF","mixinTextureProps","FEATURE_SHEEN","FEATURE_CLEARCOAT","FEATURE_TRANSMISSION","FEATURE_IRIDESCENCE","EMISSIVE_COLOR_UNIFORM","defineInstanceUniform","EMISSIVE_STRENGTH_UNIFORM","cls","_f0","_emissiveColor","_emissiveStrength","_occlusionStrength","_sheenFactor","_clearcoatFactor","_transmissionFactor","_thicknessFactor","_attenuationColor","_attenuationDistance","_iridescenceFactor","Vector4","Vector3","zero","one","copyFrom","other","ior","transmissionFactor","thicknessFactor","attenuationColor","attenuationDistance","iridescenceFactor","iridescenceIor","iridescenceThicknessMin","iridescenceThicknessMax","occlusionStrength","emissiveColor","emissiveStrength","transmission","iridescence","clearcoat","clearcoatIntensity","clearcoatRoughnessFactor","sheen","sheenColorFactor","sheenRoughnessFactor","w","val","k","setXYZW","uniformChanged","equalsTo","set","x","y","z","featureUsed","useFeature","xyz","vertexShader","scope","needFragmentColor","drawContext","materialFlags","MaterialVaryingFlags","INSTANCING","$outputs","zEmissiveColor","getInstancedUniform","zEmissiveStrength","fragmentShader","pb","$builder","zF0","vec4","uniform","vec3","float","occlusionTexture","zOcclusionStrength","zSheenFactor","zClearcoatFactor","renderPass","type","RENDER_PASS_TYPE_LIGHT","zTransmissionFactor","zThicknessFactor","zAttenuationColor","zAttenuationDistance","zIridescenceFactor","drawEnvLight","zGGXLut","tex2D","needSceneColor","applyUniformValues","bindGroup","ctx","pass","setValue","setTexture","getGGXLUT","getF0","getCommonDatasStruct","defineStruct","getCommonData","albedo","normal","viewVec","TBN","that","funcName","func","mat3","$l","data","calculateCommonData","$return","$g","sheenColorTexture","sheenColor","mul","sampleSheenColorTexture","rgb","sheenRoughnessTexture","sheenRoughness","sampleSheenRoughnessTexture","a","sheenDFG","sheenAlbedoScaling","sub","max","r","g","b","clearcoatNormalTexture","ccNormal","sampleClearcoatNormalTexture","zz","normalize","ccNoV","clamp","dot","ccFactor","clearcoatIntensityTexture","sampleClearcoatIntensityTexture","clearcoatRoughnessTexture","sampleClearcoatRoughnessTexture","transmissionTexture","sampleTransmissionTexture","thicknessTexture","sampleThicknessTexture","iridescenceTexture","sampleIridescenceTexture","iridescenceThicknessTexture","mix","sampleIridescenceThicknessTexture","iridescenceFresnel","evalIridescence","f0","iridescenceF0","schlickToF0","getEmissiveColor","instancing","$inputs","getEmissiveStrength","calculateEmissiveColor","emissiveTexture","sampleEmissiveTexture","D_Charlie","NdotH","funcNameDCharlie","alphaG","invR","div","cos2h","sin2h","add","pow","Math","PI","V_Ashikhmin","NdotL","NdotV","funcNameVAshikhmin","getVolumeTransmissionRay","thickness","refractionVector","refract","neg","modelScale","getGlobalScope","getTransmissionSample","fragCoord","roughness","vec2","applyIorToRoughness","framebufferLod","log2","ShaderHelper","getSceneColorTextureSize","textureSampleLevel","getSceneColorTexture","getPunctualRadianceTransmission","lightDir","alphaRoughness","f90","baseColor","transmissionRoughness","mirrorL","L","h","D","distributionGGX","F","fresnelSchlick","V","visGGX","applyVolumeAttenuation","radiance","transmissionDistance","$if","equal","$else","attenuationCoefficient","log","transmittance","exp","getIBLVolumnRefraction","brdf","position","transmissionRay","transmissionRayLength","length","refractedRayExit","ndcPos","getViewProjectionMatrix","refractionCoords","xy","transmittedLight","attColor","specularColor","directLighting","lightColor","commonData","outColor","inout","H","NoH","NoL","NoV","greaterThan","VoH","schlickFresnel","specularWeight","metallic","specular","iridescenceFresnelMax","diffuseBRDF","diffuse","pointToLight","sheenD","sheenV","ccF0","fresnel0ToIor","fresnel0","sqrtF0","sqrt","iorToFresnel0v","transmittedIor","incidentIor","t","iorToFresnel0","evalSensitivity","OPD","shift","phase","pos","va","cos","f","VdotH","x2","x5","outsideIOR","eta2","cosTheta1","thinFilmThickness","baseF0","smoothStep","sinTheta2Sq","cosTheta2Sq","lessThan","cosTheta2","R0","R12","R21","T121","phi12","phi21","baseIOR","R1","R23","phi23","phi","R123","r123","Rs","C0","I","Cm","$for","int","Sm","m","indirectLighting","outRoughness","out","env","light","envLight","hasRadiance","hasIrradiance","envLightStrength","getEnvLightStrength","specWeight","occlusionSample","sampleOcclusionTexture","occlusion","ggxLutSample","f_ab","rg","F0","Fr","k_S","FssEss","specularFactor","getRadiance","reflect","irradiance","getIrradiance","iridescenceF0Max","mixedF0","Ems","F_avg","FmsEms","k_D","iblDiffuse","iblTransmission","worldPos","refl","sheenBRDF","ccSpecular","defineFeature"],"mappings":"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"}
|