@zephyr3d/scene 0.9.22 → 0.9.24
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/joint_dynamics/collision.js +1 -7
- package/dist/animation/joint_dynamics/collision.js.map +1 -1
- package/dist/animation/joint_dynamics/constraints.js +2 -17
- package/dist/animation/joint_dynamics/constraints.js.map +1 -1
- package/dist/animation/joint_dynamics/controller.js +2 -20
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +1 -3
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +14 -60
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics/types.js +3 -3
- package/dist/animation/joint_dynamics/types.js.map +1 -1
- package/dist/app/app.js +23 -0
- package/dist/app/app.js.map +1 -1
- package/dist/app/scriptregistry.js +16 -53
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +2 -0
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/model.js +22 -0
- package/dist/asset/model.js.map +1 -1
- package/dist/blitter/bilateralblur.js +3 -1
- package/dist/blitter/bilateralblur.js.map +1 -1
- package/dist/blitter/blitter.js +3 -3
- package/dist/blitter/blitter.js.map +1 -1
- package/dist/camera/camera.js +398 -45
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/perspectivecamera.js +69 -2
- package/dist/camera/perspectivecamera.js.map +1 -1
- package/dist/index.d.ts +9113 -8740
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +1 -1
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/lambert.js +3 -3
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +8 -5
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +17 -10
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +1 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +21 -6
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +33 -11
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/brdf.js +44 -12
- package/dist/material/mixins/pbr/brdf.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +149 -14
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mtoon.js +7 -4
- package/dist/material/mtoon.js.map +1 -1
- package/dist/material/pbrblueprint.js +5 -1
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/material/pbrmr.js +1 -1
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js +1 -1
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/shader/helper.js +512 -334
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/skin.js +2 -2
- package/dist/material/skin.js.map +1 -1
- package/dist/material/terrain-cm.js +5 -5
- package/dist/material/terrain-cm.js.map +1 -1
- package/dist/material/water.js +6 -4
- package/dist/material/water.js.map +1 -1
- package/dist/posteffect/bloom.js +54 -4
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/compositor.js +41 -0
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/posteffect.js +35 -0
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/sao.js +7 -6
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/skinsss.js +3 -3
- package/dist/posteffect/skinsss.js.map +1 -1
- package/dist/posteffect/ssgi.js +988 -436
- package/dist/posteffect/ssgi.js.map +1 -1
- package/dist/posteffect/ssr.js +83 -45
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/sss.js +18 -15
- package/dist/posteffect/sss.js.map +1 -1
- package/dist/posteffect/taa.js +5 -4
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/posteffect/tonemap.js +15 -3
- package/dist/posteffect/tonemap.js.map +1 -1
- package/dist/render/abuffer_oit.js +2 -2
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/cluster_light.js +22 -16
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/drawable_mixin.js +8 -5
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/dualdepthpeeling_oit.js +10 -5
- package/dist/render/dualdepthpeeling_oit.js.map +1 -1
- package/dist/render/envlight.js +298 -5
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/gpu_picking.js +7 -5
- package/dist/render/gpu_picking.js.map +1 -1
- package/dist/render/hzb.js +28 -19
- package/dist/render/hzb.js.map +1 -1
- package/dist/render/lightpass.js +18 -4
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/render_queue.js +37 -4
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +8 -3
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/blackboard.js +20 -48
- package/dist/render/rendergraph/blackboard.js.map +1 -1
- package/dist/render/rendergraph/device_pool_allocator.js +18 -58
- package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
- package/dist/render/rendergraph/executor.js +89 -115
- package/dist/render/rendergraph/executor.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +1003 -715
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/frame_graph_context.js +1 -1
- package/dist/render/rendergraph/frame_graph_context.js.map +1 -1
- package/dist/render/rendergraph/frame_resource_requirements.js +14 -0
- package/dist/render/rendergraph/frame_resource_requirements.js.map +1 -0
- package/dist/render/rendergraph/history_resource_manager.js +74 -140
- package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
- package/dist/render/rendergraph/history_resources.js +7 -5
- package/dist/render/rendergraph/history_resources.js.map +1 -1
- package/dist/render/rendergraph/render_context.js +19 -0
- package/dist/render/rendergraph/render_context.js.map +1 -0
- package/dist/render/rendergraph/render_pipeline.js +315 -0
- package/dist/render/rendergraph/render_pipeline.js.map +1 -0
- package/dist/render/rendergraph/rendergraph.js +158 -141
- package/dist/render/rendergraph/rendergraph.js.map +1 -1
- package/dist/render/rendergraph/scene_render_context.js +267 -0
- package/dist/render/rendergraph/scene_render_context.js.map +1 -0
- package/dist/render/rendergraph/texture_affinity_cache.js +19 -0
- package/dist/render/rendergraph/texture_affinity_cache.js.map +1 -0
- package/dist/render/rendergraph/types.js +19 -31
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/renderpass.js +3 -3
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/shadow_mask_pass.js +7 -6
- package/dist/render/shadow_mask_pass.js.map +1 -1
- package/dist/render/sky.js +257 -95
- package/dist/render/sky.js.map +1 -1
- package/dist/render/weightedblended_oit.js +4 -3
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +2 -0
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +10 -0
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +61 -2
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/light.js +178 -10
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/meshdrawable.js +89 -2
- package/dist/scene/meshdrawable.js.map +1 -1
- package/dist/scene/msdftext.js +2 -0
- package/dist/scene/msdftext.js.map +1 -1
- package/dist/scene/msdftextsprite.js +2 -0
- package/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/scene/particlesys.js +2 -0
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/scene.js +34 -1
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/terrain-cm/grass.js +2 -1
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +2 -0
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/water.js +2 -0
- package/dist/scene/water.js.map +1 -1
- package/dist/shaders/atmosphere.js +5 -4
- package/dist/shaders/atmosphere.js.map +1 -1
- package/dist/shaders/fog.js +10 -3
- package/dist/shaders/fog.js.map +1 -1
- package/dist/shaders/shadow.js +149 -40
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/ssgi_reprojection.js +118 -0
- package/dist/shaders/ssgi_reprojection.js.map +1 -0
- package/dist/shaders/ssr.js +322 -154
- package/dist/shaders/ssr.js.map +1 -1
- package/dist/shadow/esm.js +10 -7
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js +12 -12
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js +12 -12
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/pcss.js +16 -11
- package/dist/shadow/pcss.js.map +1 -1
- package/dist/shadow/shadow_impl.js +29 -3
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadowmapper.js +5 -2
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/ssm.js +13 -13
- package/dist/shadow/ssm.js.map +1 -1
- package/dist/shadow/vsm.js +7 -7
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/utility/physical.js +74 -0
- package/dist/utility/physical.js.map +1 -0
- package/dist/utility/rendermipmap.js +2 -2
- package/dist/utility/rendermipmap.js.map +1 -1
- package/dist/utility/serialization/manager.js +3 -1
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +3 -1
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +3 -1
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +598 -2
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +180 -9
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +43 -3
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +3 -1
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +3 -1
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +3 -1
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +2 -0
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +70 -0
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +3 -1
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +3 -1
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/text.js +3 -0
- package/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +3 -1
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/values.js +59 -65
- package/dist/values.js.map +1 -1
- package/package.json +3 -3
|
@@ -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 { getSheenLUT } from '../../../utility/textures/sheenlut';\r\nimport { getLTCAmpLUT, getLTCMatLUT } from '../../../utility/textures/ltclut';\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 rectSpecularScale: 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 getSheenAlbedoScaling(\r\n scope: PBInsideFunctionScope,\r\n Ndot: PBShaderExp,\r\n sheenColor: PBShaderExp,\r\n sheenRoughness: PBShaderExp\r\n ): PBShaderExp;\r\n getSheenAlbedoScalingForDirect(\r\n scope: PBInsideFunctionScope,\r\n NoV: PBShaderExp,\r\n NoL: PBShaderExp,\r\n sheenColor: PBShaderExp,\r\n sheenRoughness: PBShaderExp\r\n ): 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 diffuseScale: PBShaderExp,\r\n specularScale: PBShaderExp,\r\n sourceRadiusFactor: PBShaderExp,\r\n outColor: PBShaderExp\r\n ): void;\r\n directRectLight(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n commonData: PBShaderExp,\r\n posRange: PBShaderExp,\r\n axisX: PBShaderExp,\r\n axisY: PBShaderExp,\r\n colorIntensity: 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 outDiffuseColor?: 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 const RECT_SPECULAR_SCALE_UNIFORM = S.defineInstanceUniform(\r\n 'rectSpecularScale',\r\n 'float',\r\n 'RectSpecularScale'\r\n );\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 _rectSpecularScale: 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._rectSpecularScale = 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.rectSpecularScale = other.rectSpecularScale;\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 rectSpecularScale() {\r\n return this._rectSpecularScale;\r\n }\r\n set rectSpecularScale(val) {\r\n if (val !== this._rectSpecularScale) {\r\n this._rectSpecularScale = 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 scope.$outputs.zRectSpecularScale = this.getInstancedUniform(scope, RECT_SPECULAR_SCALE_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 scope.zRectSpecularScale = 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 scope.zSheenLut = pb.tex2D().uniform(2);\r\n }\r\n if (this.clearcoat) {\r\n scope.zClearcoatFactor = pb.vec4().uniform(2);\r\n }\r\n if (this.needsTransmissionData()) {\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 scope.zLTCMatLut = pb.tex2D().uniform(2);\r\n scope.zLTCAmpLut = pb.tex2D().uniform(2);\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 bindGroup.setValue('zRectSpecularScale', this._rectSpecularScale);\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 bindGroup.setTexture('zSheenLut', getSheenLUT(64));\r\n }\r\n if (this.clearcoat) {\r\n bindGroup.setValue('zClearcoatFactor', this._clearcoatFactor);\r\n }\r\n if (this.needsTransmissionData()) {\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 bindGroup.setTexture('zLTCMatLut', getLTCMatLUT());\r\n bindGroup.setTexture('zLTCAmpLut', getLTCAmpLUT());\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 ? [pb.vec3('sheenColor'), pb.float('sheenRoughness')] : []),\r\n ...(this.clearcoat\r\n ? [pb.vec4('ccFactor'), pb.vec3('ccNormal'), pb.float('ccNoV'), pb.float('ccFresnel')]\r\n : []),\r\n ...(this.needsTransmissionData()\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 }\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 scope.$l.ccF0Scalar = pb.pow(pb.div(pb.sub(data.f0.a, 1), pb.add(data.f0.a, 1)), 2);\r\n data.ccFresnel = pb.add(\r\n scope.ccF0Scalar,\r\n pb.mul(pb.sub(1, scope.ccF0Scalar), pb.pow(pb.sub(1, data.ccNoV), 5))\r\n );\r\n }\r\n if (this.needsTransmissionData()) {\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 getRectSpecularScale(scope: PBInsideFunctionScope) {\r\n const instancing = !!(this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING);\r\n return (instancing ? scope.$inputs.zRectSpecularScale : scope.zRectSpecularScale) as PBShaderExp;\r\n }\r\n private needsSSSTransmissionData() {\r\n return (\r\n !!(this as { subsurfaceProfile?: unknown }).subsurfaceProfile &&\r\n this.drawContext.renderPass?.type === RENDER_PASS_TYPE_LIGHT\r\n );\r\n }\r\n private needsTransmissionData() {\r\n return this.transmission || this.needsSSSTransmissionData();\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 getSheenAlbedoScaling(\r\n scope: PBInsideFunctionScope,\r\n Ndot: PBShaderExp,\r\n sheenColor: PBShaderExp,\r\n sheenRoughness: PBShaderExp\r\n ): PBShaderExp {\r\n const pb = scope.$builder;\r\n const sheenE = pb.textureSampleLevel(\r\n scope.zSheenLut,\r\n pb.clamp(pb.vec2(Ndot, sheenRoughness), pb.vec2(0), pb.vec2(1)),\r\n 0\r\n ).r;\r\n const maxSheenColor = pb.max(pb.max(sheenColor.r, sheenColor.g), sheenColor.b);\r\n return pb.sub(1, pb.mul(maxSheenColor, sheenE)) as PBShaderExp;\r\n }\r\n getSheenAlbedoScalingForDirect(\r\n scope: PBInsideFunctionScope,\r\n NoV: PBShaderExp,\r\n NoL: PBShaderExp,\r\n sheenColor: PBShaderExp,\r\n sheenRoughness: PBShaderExp\r\n ): PBShaderExp {\r\n const pb = scope.$builder;\r\n const eV = this.getSheenAlbedoScaling(scope, NoV, sheenColor, sheenRoughness);\r\n const eL = this.getSheenAlbedoScaling(scope, NoL, sheenColor, sheenRoughness);\r\n return pb.min(eV, eL) as PBShaderExp;\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(pb.max(this.sheenRoughness, 0.000001), pb.max(this.sheenRoughness, 0.000001));\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_Sheen(\r\n scope: PBInsideFunctionScope,\r\n NdotL: PBShaderExp,\r\n NdotV: PBShaderExp,\r\n sheenRoughness: PBShaderExp\r\n ) {\r\n const funcNameVSheen = 'Z_VSheen';\r\n const pb = scope.$builder;\r\n pb.func('Z_lambdaSheenNumericHelper', [pb.float('x'), pb.float('alphaG')], function () {\r\n this.$l.oneMinusAlphaSq = pb.mul(pb.sub(1, this.alphaG), pb.sub(1, this.alphaG));\r\n this.$l.a = pb.mix(21.5473, 25.3245, this.oneMinusAlphaSq);\r\n this.$l.b = pb.mix(3.82987, 3.32435, this.oneMinusAlphaSq);\r\n this.$l.c = pb.mix(0.19823, 0.16801, this.oneMinusAlphaSq);\r\n this.$l.d = pb.mix(-1.9776, -1.27393, this.oneMinusAlphaSq);\r\n this.$l.e = pb.mix(-4.32054, -4.85967, this.oneMinusAlphaSq);\r\n this.$return(\r\n pb.add(\r\n pb.div(this.a, pb.add(1, pb.mul(this.b, pb.pow(this.x, this.c)))),\r\n pb.mul(this.d, this.x),\r\n this.e\r\n )\r\n );\r\n });\r\n pb.func('Z_lambdaSheen', [pb.float('cosTheta'), pb.float('alphaG')], function () {\r\n this.$if(pb.lessThan(pb.abs(this.cosTheta), 0.5), function () {\r\n this.$return(pb.exp(this.Z_lambdaSheenNumericHelper(pb.abs(this.cosTheta), this.alphaG)));\r\n });\r\n this.$return(\r\n pb.exp(\r\n pb.sub(\r\n pb.mul(2, this.Z_lambdaSheenNumericHelper(0.5, this.alphaG)),\r\n this.Z_lambdaSheenNumericHelper(pb.sub(1, pb.abs(this.cosTheta)), this.alphaG)\r\n )\r\n )\r\n );\r\n });\r\n pb.func(\r\n funcNameVSheen,\r\n [pb.float('NdotL'), pb.float('NdotV'), pb.float('sheenRoughness')],\r\n function () {\r\n this.$l.alphaG = pb.mul(\r\n pb.max(this.sheenRoughness, 0.000001),\r\n pb.max(this.sheenRoughness, 0.000001)\r\n );\r\n this.$return(\r\n pb.clamp(\r\n pb.div(\r\n 1,\r\n pb.mul(\r\n pb.add(\r\n 1,\r\n this.Z_lambdaSheen(this.NdotV, this.alphaG),\r\n this.Z_lambdaSheen(this.NdotL, this.alphaG)\r\n ),\r\n 4,\r\n this.NdotV,\r\n this.NdotL\r\n )\r\n ),\r\n 0,\r\n 1\r\n )\r\n );\r\n }\r\n );\r\n return scope.$g[funcNameVSheen](NdotL, NdotV, 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 diffuseScale: PBShaderExp,\r\n specularScale: PBShaderExp,\r\n sourceRadiusFactor: 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.float('diffuseScale'),\r\n pb.float('specularScale'),\r\n pb.float('sourceRadiusFactor'),\r\n pb.vec3('outColor').inout()\r\n ],\r\n function () {\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.specularLightDir = this.L;\r\n this.$if(pb.greaterThan(this.sourceRadiusFactor, 0), function () {\r\n this.$l.reflectionVec = pb.reflect(pb.neg(this.viewVec), this.normal);\r\n this.$l.centerToRay = pb.sub(\r\n pb.mul(this.reflectionVec, pb.dot(this.L, this.reflectionVec)),\r\n this.L\r\n );\r\n this.$l.centerToRayLength = pb.length(this.centerToRay);\r\n this.$l.sphereLightBlend = pb.clamp(\r\n pb.div(this.sourceRadiusFactor, pb.max(this.centerToRayLength, 0.0001)),\r\n 0,\r\n 1\r\n );\r\n this.specularLightDir = pb.normalize(\r\n pb.add(this.L, pb.mul(this.centerToRay, this.sphereLightBlend))\r\n );\r\n });\r\n this.$l.H = pb.normalize(pb.add(this.viewVec, this.specularLightDir));\r\n this.$l.NoH = pb.clamp(pb.dot(this.normal, this.H), 0, 1);\r\n this.$l.specularNoL = pb.clamp(pb.dot(this.normal, this.specularLightDir), 0, 1);\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 if (that.sheen) {\r\n this.$l.sheenAlbedoScaling = that.getSheenAlbedoScalingForDirect(\r\n this,\r\n this.NoV,\r\n this.NoL,\r\n this.data.sheenColor,\r\n this.data.sheenRoughness\r\n );\r\n }\r\n this.$l.baseLayerAttenuation = pb.float(1);\r\n if (that.clearcoat) {\r\n this.$if(pb.greaterThan(this.data.ccFactor.x, 0), function () {\r\n this.$l.ccF0 = pb.vec3(\r\n pb.pow(pb.div(pb.sub(this.data.f0.a, 1), pb.add(this.data.f0.a, 1)), 2)\r\n );\r\n this.$l.clearcoatF = that.fresnelSchlick(this, this.VoH, this.ccF0, pb.vec3(1));\r\n this.baseLayerAttenuation = pb.clamp(\r\n pb.sub(1, pb.mul(this.clearcoatF.r, this.data.ccFactor.x)),\r\n 0,\r\n 1\r\n );\r\n });\r\n }\r\n this.$l.alphaRoughness = pb.mul(this.data.roughness, this.data.roughness);\r\n this.$l.specularRoughness = pb.sqrt(this.alphaRoughness);\r\n this.$l.D = that.distributionGGX(this, this.NoH, this.alphaRoughness);\r\n this.$l.V = that.visGGX(this, this.NoV, this.specularNoL, this.alphaRoughness);\r\n this.$l.specular = pb.mul(\r\n this.lightColor,\r\n this.D,\r\n this.V,\r\n this.F,\r\n this.data.specularWeight,\r\n this.specularScale\r\n );\r\n this.specular = pb.mul(this.specular, this.baseLayerAttenuation);\r\n if (that.sheen) {\r\n this.specular = pb.mul(this.specular, this.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(\r\n this.lightColor,\r\n pb.max(this.diffuseBRDF, pb.vec3(0)),\r\n this.diffuseScale\r\n );\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.sheenAlbedoScaling);\r\n }\r\n this.diffuse = pb.mul(this.diffuse, this.baseLayerAttenuation);\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_Sheen(this, this.NoL, this.NoV, this.data.sheenRoughness);\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.$l.clearcoatAlphaRoughness = pb.mul(this.data.ccFactor.y, this.data.ccFactor.y);\r\n this.alphaRoughness = this.clearcoatAlphaRoughness;\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.specularLightDir), 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(\r\n this.outColor,\r\n pb.mul(this.lightColor, 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](\r\n lightDir,\r\n lightColor,\r\n normal,\r\n viewVec,\r\n commonData,\r\n diffuseScale,\r\n specularScale,\r\n sourceRadiusFactor,\r\n outColor\r\n );\r\n }\r\n directRectLight(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n commonData: PBShaderExp,\r\n posRange: PBShaderExp,\r\n axisX: PBShaderExp,\r\n axisY: PBShaderExp,\r\n colorIntensity: PBShaderExp,\r\n outColor: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const funcName = 'Z_PBRRectLight';\r\n const LUT_SIZE = 64;\r\n const LUT_SCALE = (LUT_SIZE - 1) / LUT_SIZE;\r\n const LUT_BIAS = 0.5 / LUT_SIZE;\r\n pb.func('Z_LTCIntegrateEdgeVec', [pb.vec3('v1'), pb.vec3('v2')], function () {\r\n this.$l.x = pb.dot(this.v1, this.v2);\r\n this.$l.y = pb.abs(this.x);\r\n this.$l.a = pb.add(0.8543985, pb.mul(pb.add(0.4965155, pb.mul(0.0145206, this.y)), this.y));\r\n this.$l.b = pb.add(3.417594, pb.mul(pb.add(4.1616724, this.y), this.y));\r\n this.$l.v = pb.div(this.a, this.b);\r\n this.$l.thetaSinTheta = this.$choice(\r\n pb.greaterThan(this.x, 0),\r\n this.v,\r\n pb.sub(pb.mul(0.5, pb.inverseSqrt(pb.max(pb.sub(1, pb.mul(this.x, this.x)), 1e-7))), this.v)\r\n );\r\n this.$return(pb.mul(pb.cross(this.v1, this.v2), this.thetaSinTheta));\r\n });\r\n pb.func('Z_LTCClipQuadToHorizon', [pb.vec3[5]('L').inout(), pb.int('n').out()], function () {\r\n this.$l.config = pb.int(0);\r\n this.$if(pb.greaterThan(this.L[0].z, 0), function () {\r\n this.config = pb.add(this.config, 1);\r\n });\r\n this.$if(pb.greaterThan(this.L[1].z, 0), function () {\r\n this.config = pb.add(this.config, 2);\r\n });\r\n this.$if(pb.greaterThan(this.L[2].z, 0), function () {\r\n this.config = pb.add(this.config, 4);\r\n });\r\n this.$if(pb.greaterThan(this.L[3].z, 0), function () {\r\n this.config = pb.add(this.config, 8);\r\n });\r\n this.n = 0;\r\n this.$if(pb.equal(this.config, 0), function () {})\r\n .$elseif(pb.equal(this.config, 1), function () {\r\n this.n = 3;\r\n this.L[1] = pb.add(pb.mul(pb.neg(this.L[1].z), this.L[0]), pb.mul(this.L[0].z, this.L[1]));\r\n this.L[2] = pb.add(pb.mul(pb.neg(this.L[3].z), this.L[0]), pb.mul(this.L[0].z, this.L[3]));\r\n })\r\n .$elseif(pb.equal(this.config, 2), function () {\r\n this.n = 3;\r\n this.L[0] = pb.add(pb.mul(pb.neg(this.L[0].z), this.L[1]), pb.mul(this.L[1].z, this.L[0]));\r\n this.L[2] = pb.add(pb.mul(pb.neg(this.L[2].z), this.L[1]), pb.mul(this.L[1].z, this.L[2]));\r\n })\r\n .$elseif(pb.equal(this.config, 3), function () {\r\n this.n = 4;\r\n this.L[2] = pb.add(pb.mul(pb.neg(this.L[2].z), this.L[1]), pb.mul(this.L[1].z, this.L[2]));\r\n this.L[3] = pb.add(pb.mul(pb.neg(this.L[3].z), this.L[0]), pb.mul(this.L[0].z, this.L[3]));\r\n })\r\n .$elseif(pb.equal(this.config, 4), function () {\r\n this.n = 3;\r\n this.L[0] = pb.add(pb.mul(pb.neg(this.L[3].z), this.L[2]), pb.mul(this.L[2].z, this.L[3]));\r\n this.L[1] = pb.add(pb.mul(pb.neg(this.L[1].z), this.L[2]), pb.mul(this.L[2].z, this.L[1]));\r\n })\r\n .$elseif(pb.equal(this.config, 6), function () {\r\n this.n = 4;\r\n this.L[0] = pb.add(pb.mul(pb.neg(this.L[0].z), this.L[1]), pb.mul(this.L[1].z, this.L[0]));\r\n this.L[3] = pb.add(pb.mul(pb.neg(this.L[3].z), this.L[2]), pb.mul(this.L[2].z, this.L[3]));\r\n })\r\n .$elseif(pb.equal(this.config, 7), function () {\r\n this.n = 5;\r\n this.L[4] = pb.add(pb.mul(pb.neg(this.L[3].z), this.L[0]), pb.mul(this.L[0].z, this.L[3]));\r\n this.L[3] = pb.add(pb.mul(pb.neg(this.L[3].z), this.L[2]), pb.mul(this.L[2].z, this.L[3]));\r\n })\r\n .$elseif(pb.equal(this.config, 8), function () {\r\n this.n = 3;\r\n this.L[0] = pb.add(pb.mul(pb.neg(this.L[0].z), this.L[3]), pb.mul(this.L[3].z, this.L[0]));\r\n this.L[1] = pb.add(pb.mul(pb.neg(this.L[2].z), this.L[3]), pb.mul(this.L[3].z, this.L[2]));\r\n this.L[2] = this.L[3];\r\n })\r\n .$elseif(pb.equal(this.config, 9), function () {\r\n this.n = 4;\r\n this.L[1] = pb.add(pb.mul(pb.neg(this.L[1].z), this.L[0]), pb.mul(this.L[0].z, this.L[1]));\r\n this.L[2] = pb.add(pb.mul(pb.neg(this.L[2].z), this.L[3]), pb.mul(this.L[3].z, this.L[2]));\r\n })\r\n .$elseif(pb.equal(this.config, 11), function () {\r\n this.n = 5;\r\n this.L[4] = this.L[3];\r\n this.L[3] = pb.add(pb.mul(pb.neg(this.L[2].z), this.L[3]), pb.mul(this.L[3].z, this.L[2]));\r\n this.L[2] = pb.add(pb.mul(pb.neg(this.L[2].z), this.L[1]), pb.mul(this.L[1].z, this.L[2]));\r\n })\r\n .$elseif(pb.equal(this.config, 12), function () {\r\n this.n = 4;\r\n this.L[1] = pb.add(pb.mul(pb.neg(this.L[1].z), this.L[2]), pb.mul(this.L[2].z, this.L[1]));\r\n this.L[0] = pb.add(pb.mul(pb.neg(this.L[0].z), this.L[3]), pb.mul(this.L[3].z, this.L[0]));\r\n })\r\n .$elseif(pb.equal(this.config, 13), function () {\r\n this.n = 5;\r\n this.L[4] = this.L[3];\r\n this.L[3] = this.L[2];\r\n this.L[2] = pb.add(pb.mul(pb.neg(this.L[1].z), this.L[2]), pb.mul(this.L[2].z, this.L[1]));\r\n this.L[1] = pb.add(pb.mul(pb.neg(this.L[1].z), this.L[0]), pb.mul(this.L[0].z, this.L[1]));\r\n })\r\n .$elseif(pb.equal(this.config, 14), function () {\r\n this.n = 5;\r\n this.L[4] = pb.add(pb.mul(pb.neg(this.L[0].z), this.L[3]), pb.mul(this.L[3].z, this.L[0]));\r\n this.L[0] = pb.add(pb.mul(pb.neg(this.L[0].z), this.L[1]), pb.mul(this.L[1].z, this.L[0]));\r\n })\r\n .$elseif(pb.equal(this.config, 15), function () {\r\n this.n = 4;\r\n });\r\n this.$if(pb.equal(this.n, 3), function () {\r\n this.L[3] = this.L[0];\r\n });\r\n this.$if(pb.equal(this.n, 4), function () {\r\n this.L[4] = this.L[0];\r\n });\r\n });\r\n pb.func(\r\n 'Z_LTCEvaluateRect',\r\n [\r\n pb.vec3('N'),\r\n pb.vec3('V'),\r\n pb.vec3('P'),\r\n pb.mat3('Minv'),\r\n pb.vec3('p0'),\r\n pb.vec3('p1'),\r\n pb.vec3('p2'),\r\n pb.vec3('p3')\r\n ],\r\n function () {\r\n this.$l.T1 = pb.normalize(pb.sub(this.V, pb.mul(this.N, pb.dot(this.V, this.N))));\r\n this.$l.T2 = pb.cross(this.N, this.T1);\r\n if (pb.getDevice().type === 'webgl') {\r\n this.$l.ltcBasis = pb.mat3(\r\n pb.vec3(this.T1.x, this.T2.x, this.N.x),\r\n pb.vec3(this.T1.y, this.T2.y, this.N.y),\r\n pb.vec3(this.T1.z, this.T2.z, this.N.z)\r\n );\r\n this.$l.ltcMatrix = pb.mul(this.Minv, this.ltcBasis);\r\n } else {\r\n this.$l.ltcMatrix = pb.mul(this.Minv, pb.transpose(pb.mat3(this.T1, this.T2, this.N)));\r\n }\r\n this.$l.L = pb.vec3[5]();\r\n this.L[0] = pb.mul(this.ltcMatrix, pb.sub(this.p0, this.P));\r\n this.L[1] = pb.mul(this.ltcMatrix, pb.sub(this.p1, this.P));\r\n this.L[2] = pb.mul(this.ltcMatrix, pb.sub(this.p2, this.P));\r\n this.L[3] = pb.mul(this.ltcMatrix, pb.sub(this.p3, this.P));\r\n this.$l.n = pb.int(0);\r\n this.Z_LTCClipQuadToHorizon(this.L, this.n);\r\n this.$if(pb.equal(this.n, 0), function () {\r\n this.$return(pb.vec3(0));\r\n });\r\n this.L[0] = pb.normalize(this.L[0]);\r\n this.L[1] = pb.normalize(this.L[1]);\r\n this.L[2] = pb.normalize(this.L[2]);\r\n this.L[3] = pb.normalize(this.L[3]);\r\n this.L[4] = pb.normalize(this.L[4]);\r\n this.$l.sum = pb.float(0);\r\n this.sum = pb.add(this.sum, this.Z_LTCIntegrateEdgeVec(this.L[0], this.L[1]).z);\r\n this.sum = pb.add(this.sum, this.Z_LTCIntegrateEdgeVec(this.L[1], this.L[2]).z);\r\n this.sum = pb.add(this.sum, this.Z_LTCIntegrateEdgeVec(this.L[2], this.L[3]).z);\r\n this.$if(pb.greaterThanEqual(this.n, 4), function () {\r\n this.sum = pb.add(this.sum, this.Z_LTCIntegrateEdgeVec(this.L[3], this.L[4]).z);\r\n });\r\n this.$if(pb.equal(this.n, 5), function () {\r\n this.sum = pb.add(this.sum, this.Z_LTCIntegrateEdgeVec(this.L[4], this.L[0]).z);\r\n });\r\n this.sum = pb.max(0, this.sum);\r\n this.$return(pb.vec3(this.sum));\r\n }\r\n );\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec3('worldPos'),\r\n pb.vec3('normal'),\r\n pb.vec3('viewVec'),\r\n that.getCommonDatasStruct(scope)('data'),\r\n pb.vec4('posRange'),\r\n pb.vec4('axisX'),\r\n pb.vec4('axisY'),\r\n pb.vec4('colorIntensity'),\r\n pb.vec3('outColor').inout()\r\n ],\r\n function () {\r\n this.$l.center = this.posRange.xyz;\r\n this.$l.range = this.posRange.w;\r\n this.$l.ax = this.axisX.xyz;\r\n this.$l.ay = this.axisY.xyz;\r\n this.$l.halfWidth = pb.length(this.ax);\r\n this.$l.halfHeight = pb.length(this.ay);\r\n this.$l.area = pb.mul(this.halfWidth, this.halfHeight, 4);\r\n this.$l.lightNormal = pb.normalize(pb.cross(this.ax, this.ay));\r\n this.lightNormal = pb.neg(this.lightNormal);\r\n this.$if(pb.greaterThan(this.area, 0), function () {\r\n this.$l.ex = this.ax;\r\n this.$l.ey = this.ay;\r\n this.$l.p0 = pb.sub(pb.sub(this.center, this.ex), this.ey);\r\n this.$l.p1 = pb.add(pb.sub(this.center, this.ey), this.ex);\r\n this.$l.p2 = pb.add(pb.add(this.center, this.ex), this.ey);\r\n this.$l.p3 = pb.add(pb.sub(this.center, this.ex), this.ey);\r\n this.$l.centerToPoint = pb.sub(this.center, this.worldPos);\r\n this.$l.dist = pb.length(this.centerToPoint);\r\n this.$l.L = pb.normalize(this.centerToPoint);\r\n this.$l.NoV = pb.clamp(pb.dot(this.normal, this.viewVec), 0.0001, 1);\r\n this.$l.NoL_light = pb.clamp(pb.dot(this.lightNormal, pb.neg(this.L)), 0, 1);\r\n // Keep rect lights single-sided, but avoid applying an extra cosine falloff\r\n // on top of the LTC integral, which makes the light look noticeably dimmer.\r\n this.$if(pb.greaterThan(this.NoL_light, 1e-5), function () {\r\n this.$l.falloff = pb.float(1);\r\n this.$if(pb.greaterThan(this.range, 0), function () {\r\n this.$l.fadeStart = pb.mul(this.range, 0.9);\r\n this.falloff = pb.sub(1, pb.smoothStep(this.fadeStart, this.range, this.dist));\r\n });\r\n this.$l.uv = pb.clamp(\r\n pb.add(\r\n pb.mul(pb.vec2(this.data.roughness, pb.sqrt(pb.max(pb.sub(1, this.NoV), 0))), LUT_SCALE),\r\n pb.vec2(LUT_BIAS)\r\n ),\r\n pb.vec2(0),\r\n pb.vec2(1)\r\n );\r\n this.$l.t1 = pb.textureSampleLevel(this.zLTCMatLut, this.uv, 0);\r\n this.$l.t2 = pb.textureSampleLevel(this.zLTCAmpLut, this.uv, 0);\r\n this.$l.Minv = pb.mat3(\r\n pb.vec3(this.t1.x, 0, this.t1.y),\r\n pb.vec3(0, 1, 0),\r\n pb.vec3(this.t1.z, 0, this.t1.w)\r\n );\r\n this.$l.spec = this.Z_LTCEvaluateRect(\r\n this.normal,\r\n this.viewVec,\r\n this.worldPos,\r\n this.Minv,\r\n this.p0,\r\n this.p1,\r\n this.p2,\r\n this.p3\r\n );\r\n this.$l.diff = this.Z_LTCEvaluateRect(\r\n this.normal,\r\n this.viewVec,\r\n this.worldPos,\r\n pb.mat3(pb.vec3(1, 0, 0), pb.vec3(0, 1, 0), pb.vec3(0, 0, 1)),\r\n this.p0,\r\n this.p1,\r\n this.p2,\r\n this.p3\r\n );\r\n this.$l.lightColor = pb.mul(this.colorIntensity.rgb, this.colorIntensity.a, this.falloff);\r\n this.$l.baseF0 = this.data.f0.rgb;\r\n this.$l.rectSpecularScale = that.getRectSpecularScale(this);\r\n this.$l.specularLtc = pb.mul(\r\n this.spec,\r\n pb.add(pb.mul(this.baseF0, this.t2.x), pb.mul(pb.sub(pb.vec3(1), this.baseF0), this.t2.y)),\r\n this.data.specularWeight,\r\n this.rectSpecularScale\r\n );\r\n this.$l.diffuseLtc = pb.mul(this.diff, pb.div(this.data.diffuse.rgb, Math.PI));\r\n this.outColor = pb.add(\r\n this.outColor,\r\n pb.mul(this.lightColor, pb.add(this.diffuseLtc, this.specularLtc))\r\n );\r\n });\r\n });\r\n }\r\n );\r\n scope.$g[funcName](\r\n worldPos,\r\n normal,\r\n viewVec,\r\n commonData,\r\n posRange,\r\n axisX,\r\n axisY,\r\n colorIntensity,\r\n outColor\r\n );\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 outDiffuseColor?: 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 ...(outDiffuseColor ? [pb.vec3('outDiffuseColor').inout()] : [])\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 const envLightSpecularStrength = ShaderHelper.getEnvLightSpecularStrength(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 if (that.sheen) {\r\n this.$l.sheenLutSample = pb.clamp(\r\n pb.textureSampleLevel(\r\n this.zSheenLut,\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 );\r\n this.$l.sheenAlbedoScaling = pb.sub(\r\n 1,\r\n pb.mul(\r\n pb.max(pb.max(this.data.sheenColor.r, this.data.sheenColor.g), this.data.sheenColor.b),\r\n this.sheenLutSample.r\r\n )\r\n );\r\n }\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.clearcoat) {\r\n this.$if(pb.greaterThan(this.data.ccFactor.x, 0), function () {\r\n this.specularFactor = pb.mul(\r\n this.specularFactor,\r\n pb.clamp(pb.sub(1, pb.mul(this.data.ccFresnel, this.data.ccFactor.x)), 0, 1)\r\n );\r\n });\r\n }\r\n if (that.sheen) {\r\n this.specularFactor = pb.mul(this.specularFactor, this.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(\r\n this.outColor,\r\n pb.mul(this.radiance, this.specularFactor, envLightSpecularStrength)\r\n );\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(pb.add(this.FmsEms, this.k_D), this.irradiance, this.occlusion);\r\n if (that.clearcoat) {\r\n this.$if(pb.greaterThan(this.data.ccFactor.x, 0), function () {\r\n this.iblDiffuse = pb.mul(\r\n this.iblDiffuse,\r\n pb.clamp(pb.sub(1, pb.mul(this.data.ccFresnel, this.data.ccFactor.x)), 0, 1)\r\n );\r\n });\r\n }\r\n if (that.sheen) {\r\n this.iblDiffuse = pb.mul(this.iblDiffuse, this.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 if (outDiffuseColor) {\r\n this.outDiffuseColor = pb.add(this.outDiffuseColor, this.iblDiffuse);\r\n }\r\n }\r\n if (\r\n that.sheen &&\r\n (ctx.env!.light.envLight.hasSheenRadiance() || ctx.env!.light.envLight.hasIrradiance())\r\n ) {\r\n this.$l.sheenBRDF = this.sheenLutSample.b;\r\n if (ctx.env!.light.envLight.hasSheenRadiance()) {\r\n this.$l.sheenRadiance = ctx.env!.light.envLight.getSheenRadiance(\r\n this,\r\n pb.reflect(pb.neg(this.viewVec), this.normal),\r\n this.data.sheenRoughness\r\n );\r\n this.outColor = pb.add(\r\n this.outColor,\r\n pb.mul(this.data.sheenColor, this.sheenRadiance, this.sheenBRDF, this.occlusion)\r\n );\r\n } else {\r\n this.outColor = pb.add(\r\n this.outColor,\r\n pb.mul(this.data.sheenColor, this.irradiance.rgb, this.sheenBRDF, this.occlusion)\r\n );\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(\r\n pb.vec3(pb.sub(1, this.data.ccFactor.y)),\r\n pb.vec3(pb.pow(pb.div(pb.sub(this.data.f0.a, 1), pb.add(this.data.f0.a, 1)), 2))\r\n ),\r\n pb.vec3(pb.pow(pb.div(pb.sub(this.data.f0.a, 1), pb.add(this.data.f0.a, 1)), 2))\r\n );\r\n this.$l.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.$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, envLightSpecularStrength);\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 && outDiffuseColor) {\r\n scope.$g[funcName](normal, viewVec, commonData, outColor, outRoughness, outDiffuseColor);\r\n } else if (outRoughness) {\r\n scope.$g[funcName](normal, viewVec, commonData, outColor, outRoughness);\r\n } else if (outDiffuseColor) {\r\n scope.$g[funcName](normal, viewVec, commonData, outColor, outDiffuseColor);\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","RECT_SPECULAR_SCALE_UNIFORM","cls","_f0","_emissiveColor","_emissiveStrength","_occlusionStrength","_rectSpecularScale","_sheenFactor","_clearcoatFactor","_transmissionFactor","_thicknessFactor","_attenuationColor","_attenuationDistance","_iridescenceFactor","Vector4","Vector3","zero","one","copyFrom","other","ior","transmissionFactor","thicknessFactor","attenuationColor","attenuationDistance","iridescenceFactor","iridescenceIor","iridescenceThicknessMin","iridescenceThicknessMax","occlusionStrength","rectSpecularScale","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","zRectSpecularScale","fragmentShader","pb","$builder","zF0","vec4","uniform","vec3","float","occlusionTexture","zOcclusionStrength","zSheenFactor","zSheenLut","tex2D","zClearcoatFactor","needsTransmissionData","zTransmissionFactor","zThicknessFactor","zAttenuationColor","zAttenuationDistance","zIridescenceFactor","drawEnvLight","zGGXLut","zLTCMatLut","zLTCAmpLut","needSceneColor","applyUniformValues","bindGroup","ctx","pass","setValue","setTexture","getSheenLUT","getGGXLUT","getLTCMatLUT","getLTCAmpLUT","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","clearcoatNormalTexture","ccNormal","sub","sampleClearcoatNormalTexture","zz","normalize","ccNoV","clamp","dot","ccFactor","clearcoatIntensityTexture","sampleClearcoatIntensityTexture","r","clearcoatRoughnessTexture","sampleClearcoatRoughnessTexture","g","ccF0Scalar","pow","div","f0","add","ccFresnel","transmissionTexture","sampleTransmissionTexture","thicknessTexture","sampleThicknessTexture","iridescenceTexture","sampleIridescenceTexture","iridescenceThicknessTexture","mix","sampleIridescenceThicknessTexture","iridescenceFresnel","evalIridescence","iridescenceF0","schlickToF0","getEmissiveColor","instancing","$inputs","getEmissiveStrength","getRectSpecularScale","needsSSSTransmissionData","subsurfaceProfile","renderPass","type","RENDER_PASS_TYPE_LIGHT","calculateEmissiveColor","emissiveTexture","sampleEmissiveTexture","getSheenAlbedoScaling","Ndot","sheenE","textureSampleLevel","vec2","maxSheenColor","max","b","getSheenAlbedoScalingForDirect","NoV","NoL","eV","eL","min","D_Charlie","NdotH","funcNameDCharlie","alphaG","invR","cos2h","sin2h","Math","PI","V_Sheen","NdotL","NdotV","funcNameVSheen","oneMinusAlphaSq","c","d","e","$if","lessThan","abs","cosTheta","exp","Z_lambdaSheenNumericHelper","Z_lambdaSheen","V_Ashikhmin","funcNameVAshikhmin","getVolumeTransmissionRay","thickness","refractionVector","refract","neg","modelScale","getGlobalScope","getTransmissionSample","fragCoord","roughness","applyIorToRoughness","framebufferLod","log2","ShaderHelper","getSceneColorTextureSize","getSceneColorTexture","getPunctualRadianceTransmission","lightDir","alphaRoughness","f90","baseColor","transmissionRoughness","mirrorL","L","h","D","distributionGGX","F","fresnelSchlick","V","visGGX","applyVolumeAttenuation","radiance","transmissionDistance","equal","$else","attenuationCoefficient","log","transmittance","getIBLVolumnRefraction","brdf","position","transmissionRay","transmissionRayLength","length","refractedRayExit","ndcPos","getViewProjectionMatrix","refractionCoords","xy","transmittedLight","attColor","specularColor","directLighting","lightColor","commonData","diffuseScale","specularScale","sourceRadiusFactor","outColor","inout","greaterThan","specularLightDir","reflectionVec","reflect","centerToRay","centerToRayLength","sphereLightBlend","H","NoH","specularNoL","VoH","schlickFresnel","sheenAlbedoScaling","baseLayerAttenuation","ccF0","clearcoatF","specularRoughness","sqrt","specular","specularWeight","iridescenceFresnelMax","diffuseBRDF","diffuse","pointToLight","sheenD","sheenV","clearcoatAlphaRoughness","directRectLight","worldPos","posRange","axisX","axisY","colorIntensity","LUT_SIZE","LUT_SCALE","LUT_BIAS","v1","v2","v","thetaSinTheta","$choice","inverseSqrt","cross","int","out","config","n","$elseif","T1","N","T2","getDevice","ltcBasis","ltcMatrix","Minv","transpose","p0","P","p1","p2","p3","Z_LTCClipQuadToHorizon","sum","Z_LTCIntegrateEdgeVec","greaterThanEqual","center","range","ax","ay","halfWidth","halfHeight","area","lightNormal","ex","ey","centerToPoint","dist","NoL_light","falloff","fadeStart","smoothStep","uv","t1","t2","spec","Z_LTCEvaluateRect","diff","baseF0","specularLtc","diffuseLtc","fresnel0ToIor","fresnel0","sqrtF0","iorToFresnel0v","transmittedIor","incidentIor","t","iorToFresnel0","evalSensitivity","OPD","shift","phase","pos","va","cos","f","VdotH","x2","x5","outsideIOR","eta2","cosTheta1","thinFilmThickness","sinTheta2Sq","cosTheta2Sq","cosTheta2","R0","R12","R21","T121","phi12","phi21","baseIOR","R1","R23","phi23","phi","R123","r123","Rs","C0","I","Cm","$for","Sm","m","indirectLighting","outRoughness","outDiffuseColor","env","light","envLight","hasRadiance","hasIrradiance","envLightStrength","getEnvLightStrength","envLightSpecularStrength","getEnvLightSpecularStrength","occlusionSample","sampleOcclusionTexture","occlusion","sheenLutSample","ggxLutSample","f_ab","rg","Fr","k_S","FssEss","specularFactor","getRadiance","irradiance","getIrradiance","iridescenceF0Max","mixedF0","Ems","F_avg","FmsEms","k_D","iblDiffuse","iblTransmission","hasSheenRadiance","sheenBRDF","sheenRadiance","getSheenRadiance","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 { getSheenLUT } from '../../../utility/textures/sheenlut';\r\nimport { getLTCAmpLUT, getLTCMatLUT } from '../../../utility/textures/ltclut';\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 emissiveLuminance: number;\r\n emissiveExposureWeight: number;\r\n occlusionStrength: number;\r\n rectSpecularScale: 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 getSheenAlbedoScaling(\r\n scope: PBInsideFunctionScope,\r\n Ndot: PBShaderExp,\r\n sheenColor: PBShaderExp,\r\n sheenRoughness: PBShaderExp\r\n ): PBShaderExp;\r\n getSheenAlbedoScalingForDirect(\r\n scope: PBInsideFunctionScope,\r\n NoV: PBShaderExp,\r\n NoL: PBShaderExp,\r\n sheenColor: PBShaderExp,\r\n sheenRoughness: PBShaderExp\r\n ): 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 diffuseScale: PBShaderExp,\r\n specularScale: PBShaderExp,\r\n sourceRadiusFactor: PBShaderExp,\r\n outColor: PBShaderExp\r\n ): void;\r\n directRectLight(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n commonData: PBShaderExp,\r\n posRange: PBShaderExp,\r\n axisX: PBShaderExp,\r\n axisY: PBShaderExp,\r\n colorIntensity: 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 outDiffuseColor?: 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 const EMISSIVE_LUMINANCE_UNIFORM = S.defineInstanceUniform(\r\n 'emissiveLuminance',\r\n 'float',\r\n 'EmissiveLuminance'\r\n );\r\n const EMISSIVE_EXPOSURE_WEIGHT_UNIFORM = S.defineInstanceUniform(\r\n 'emissiveExposureWeight',\r\n 'float',\r\n 'EmissiveExposureWeight'\r\n );\r\n const RECT_SPECULAR_SCALE_UNIFORM = S.defineInstanceUniform(\r\n 'rectSpecularScale',\r\n 'float',\r\n 'RectSpecularScale'\r\n );\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 _emissiveLuminance: number;\r\n private _emissiveExposureWeight: number;\r\n private _occlusionStrength: number;\r\n private _rectSpecularScale: 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 // 1000 cd/m² is a lit-display-class emitter: clearly visible at interior exposures and still\r\n // readable under the Sunny-16 default, unlike the 1 nit that `emissiveStrength` would mean.\r\n this._emissiveLuminance = 1000;\r\n // Default 1: emissive is a photometric luminance that follows camera exposure, like Filament.\r\n this._emissiveExposureWeight = 1;\r\n this._rectSpecularScale = 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.rectSpecularScale = other.rectSpecularScale;\r\n this.emissiveColor = other.emissiveColor;\r\n this.emissiveStrength = other.emissiveStrength;\r\n this.emissiveLuminance = other.emissiveLuminance;\r\n this.emissiveExposureWeight = other.emissiveExposureWeight;\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 /**\r\n * Artistic multiplier on the rect-light specular term.\r\n *\r\n * @remarks\r\n * 1 is neutral. Physical lighting normalizes the LTC integral by `1/(2*pi)`, which is the\r\n * reference implementation's factor, so the default needs no calibration fudge there. Legacy\r\n * keeps its historical weighting, where existing scenes may have tuned this value.\r\n */\r\n get rectSpecularScale() {\r\n return this._rectSpecularScale;\r\n }\r\n set rectSpecularScale(val) {\r\n if (val !== this._rectSpecularScale) {\r\n this._rectSpecularScale = 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 /**\r\n * Display-referred multiplier on {@link emissiveColor}, used by legacy lighting.\r\n *\r\n * @remarks\r\n * This is the glTF authoring quantity (`KHR_materials_emissive_strength`) and is unitless: the\r\n * product with {@link emissiveColor} lands directly in the render target. Physical lighting\r\n * ignores it and uses {@link emissiveLuminance} instead, exactly as a light's unitless\r\n * `intensity` gives way to its photometric counterpart.\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 /**\r\n * Multiplier on {@link emissiveColor} used by physical lighting. Legacy ignores it and uses\r\n * {@link emissiveStrength}.\r\n *\r\n * @remarks\r\n * The physical counterpart of {@link emissiveStrength}, mirroring how\r\n * {@link DirectionalLight.illuminance} and {@link RectLight.luminance} shadow a light's unitless\r\n * `intensity`. Keeping the two separate means switching {@link Scene.lightingMode} never\r\n * reinterprets one authored number as two different quantities.\r\n *\r\n * **Its unit depends on {@link emissiveExposureWeight}**, because the shaded value is\r\n * `emissiveColor * emissiveLuminance * mix(1, cameraExposure, emissiveExposureWeight)`:\r\n *\r\n * - At weight 1 (the constructor default) this is a photometric luminance in cd/m² (nit).\r\n * Anchors: an office display is 200-1000, a lit interior wall a few hundred, an overcast sky\r\n * ~2000, a neon sign 5,000-20,000. The default is 1000. Values around 1 are genuinely\r\n * invisible, since a sunlit white surface is ~25,000 cd/m².\r\n * - At weight 0 the camera exposure cancels out and this is a display-referred multiplier\r\n * landing straight in the render target, so the useful range is around [0, 1] and 1 is very\r\n * bright. **Materials imported from glTF/FBX are in this state**: the importer writes weight 0\r\n * to preserve glTF's display-referred emissive, matching Filament's gltfio. Raise the weight\r\n * to 1 (and rescale to nits) to author such a material photometrically.\r\n */\r\n get emissiveLuminance() {\r\n return this._emissiveLuminance;\r\n }\r\n set emissiveLuminance(val) {\r\n const luminance = Math.max(0, val);\r\n if (this._emissiveLuminance !== luminance) {\r\n this._emissiveLuminance = luminance;\r\n this.uniformChanged();\r\n }\r\n }\r\n /**\r\n * How strongly the emissive term follows the camera exposure, in [0, 1].\r\n *\r\n * @remarks\r\n * Mirrors Filament's `emissive.w`: the emitter is attenuated by\r\n * `mix(1, cameraExposure, emissiveExposureWeight)`.\r\n *\r\n * At 1, the constructor default, {@link emissiveLuminance} is read as the cd/m² value it claims\r\n * to be: a neon sign keeps a constant real-world brightness and darkens as the camera stops\r\n * down, like every other lit surface.\r\n *\r\n * At 0 the exposure cancels out of the product and {@link emissiveLuminance} becomes a\r\n * display-referred multiplier instead — bright at 1, and completely unresponsive to aperture,\r\n * shutter and ISO. That is what a UI-like overlay wants, and what glTF content expects, so\r\n * {@link Model} writes 0 on every imported material (Filament's gltfio writes `emissive.w = 0`\r\n * for the same reason). Keep this in mind when an imported emitter looks far brighter than an\r\n * authored one at the same {@link emissiveLuminance}.\r\n *\r\n * Has no effect in legacy lighting, where the pre-exposure is always 1.\r\n */\r\n get emissiveExposureWeight() {\r\n return this._emissiveExposureWeight;\r\n }\r\n set emissiveExposureWeight(val) {\r\n const weight = Math.max(0, Math.min(1, val));\r\n if (this._emissiveExposureWeight !== weight) {\r\n this._emissiveExposureWeight = weight;\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 scope.$outputs.zEmissiveLuminance = this.getInstancedUniform(scope, EMISSIVE_LUMINANCE_UNIFORM);\r\n scope.$outputs.zEmissiveExposureWeight = this.getInstancedUniform(\r\n scope,\r\n EMISSIVE_EXPOSURE_WEIGHT_UNIFORM\r\n );\r\n scope.$outputs.zRectSpecularScale = this.getInstancedUniform(scope, RECT_SPECULAR_SCALE_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 scope.zEmissiveLuminance = pb.float().uniform(2);\r\n scope.zEmissiveExposureWeight = pb.float().uniform(2);\r\n scope.zRectSpecularScale = 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 scope.zSheenLut = pb.tex2D().uniform(2);\r\n }\r\n if (this.clearcoat) {\r\n scope.zClearcoatFactor = pb.vec4().uniform(2);\r\n }\r\n if (this.needsTransmissionData()) {\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 scope.zLTCMatLut = pb.tex2D().uniform(2);\r\n scope.zLTCAmpLut = pb.tex2D().uniform(2);\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 bindGroup.setValue('zEmissiveLuminance', this._emissiveLuminance);\r\n bindGroup.setValue('zEmissiveExposureWeight', this._emissiveExposureWeight);\r\n bindGroup.setValue('zRectSpecularScale', this._rectSpecularScale);\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 bindGroup.setTexture('zSheenLut', getSheenLUT(64));\r\n }\r\n if (this.clearcoat) {\r\n bindGroup.setValue('zClearcoatFactor', this._clearcoatFactor);\r\n }\r\n if (this.needsTransmissionData()) {\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 bindGroup.setTexture('zLTCMatLut', getLTCMatLUT());\r\n bindGroup.setTexture('zLTCAmpLut', getLTCAmpLUT());\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 ? [pb.vec3('sheenColor'), pb.float('sheenRoughness')] : []),\r\n ...(this.clearcoat\r\n ? [pb.vec4('ccFactor'), pb.vec3('ccNormal'), pb.float('ccNoV'), pb.float('ccFresnel')]\r\n : []),\r\n ...(this.needsTransmissionData()\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 }\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 scope.$l.ccF0Scalar = pb.pow(pb.div(pb.sub(data.f0.a, 1), pb.add(data.f0.a, 1)), 2);\r\n data.ccFresnel = pb.add(\r\n scope.ccF0Scalar,\r\n pb.mul(pb.sub(1, scope.ccF0Scalar), pb.pow(pb.sub(1, data.ccNoV), 5))\r\n );\r\n }\r\n if (this.needsTransmissionData()) {\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 getEmissiveLuminance(scope: PBInsideFunctionScope) {\r\n const instancing = !!(this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING);\r\n return (instancing ? scope.$inputs.zEmissiveLuminance : scope.zEmissiveLuminance) 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 getEmissiveExposureWeight(scope: PBInsideFunctionScope) {\r\n const instancing = !!(this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING);\r\n return (\r\n instancing ? scope.$inputs.zEmissiveExposureWeight : scope.zEmissiveExposureWeight\r\n ) as PBShaderExp;\r\n }\r\n getRectSpecularScale(scope: PBInsideFunctionScope) {\r\n const instancing = !!(this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING);\r\n return (instancing ? scope.$inputs.zRectSpecularScale : scope.zRectSpecularScale) as PBShaderExp;\r\n }\r\n private needsSSSTransmissionData() {\r\n return (\r\n !!(this as { subsurfaceProfile?: unknown }).subsurfaceProfile &&\r\n this.drawContext.renderPass?.type === RENDER_PASS_TYPE_LIGHT\r\n );\r\n }\r\n private needsTransmissionData() {\r\n return this.transmission || this.needsSSSTransmissionData();\r\n }\r\n calculateEmissiveColor(scope: PBInsideFunctionScope) {\r\n const pb = scope.$builder;\r\n // Legacy multiplies by the unitless emissiveStrength, physical by the cd/m² emissiveLuminance.\r\n // Same split as a light's `intensity` vs `illuminance`/`luminance`, so switching lightingMode\r\n // never reinterprets one authored number as two different quantities. Safe to branch here\r\n // because emissive is only evaluated in the light pass, whose program hash includes\r\n // lightingMode (see LightPass._getGlobalBindGroupHash).\r\n const strength =\r\n this.drawContext.scene.lightingMode === 'physical'\r\n ? this.getEmissiveLuminance(scope)\r\n : this.getEmissiveStrength(scope);\r\n const base = this.emissiveTexture\r\n ? pb.mul(this.sampleEmissiveTexture(scope).rgb, this.getEmissiveColor(scope), strength)\r\n : pb.mul(this.getEmissiveColor(scope), strength);\r\n // Filament's emissive attenuation: mix(1, exposure, exposureWeight). Lights are pre-exposed on\r\n // the CPU, but a material-authored emitter is not, so it is exposed here. In legacy the\r\n // pre-exposure is 1, which leaves this a no-op regardless of the weight.\r\n const attenuation = pb.mix(\r\n pb.float(1),\r\n ShaderHelper.getPreExposureUniform(scope),\r\n this.getEmissiveExposureWeight(scope)\r\n );\r\n return pb.mul(base, attenuation) as PBShaderExp;\r\n }\r\n getSheenAlbedoScaling(\r\n scope: PBInsideFunctionScope,\r\n Ndot: PBShaderExp,\r\n sheenColor: PBShaderExp,\r\n sheenRoughness: PBShaderExp\r\n ): PBShaderExp {\r\n const pb = scope.$builder;\r\n const sheenE = pb.textureSampleLevel(\r\n scope.zSheenLut,\r\n pb.clamp(pb.vec2(Ndot, sheenRoughness), pb.vec2(0), pb.vec2(1)),\r\n 0\r\n ).r;\r\n const maxSheenColor = pb.max(pb.max(sheenColor.r, sheenColor.g), sheenColor.b);\r\n return pb.sub(1, pb.mul(maxSheenColor, sheenE)) as PBShaderExp;\r\n }\r\n getSheenAlbedoScalingForDirect(\r\n scope: PBInsideFunctionScope,\r\n NoV: PBShaderExp,\r\n NoL: PBShaderExp,\r\n sheenColor: PBShaderExp,\r\n sheenRoughness: PBShaderExp\r\n ): PBShaderExp {\r\n const pb = scope.$builder;\r\n const eV = this.getSheenAlbedoScaling(scope, NoV, sheenColor, sheenRoughness);\r\n const eL = this.getSheenAlbedoScaling(scope, NoL, sheenColor, sheenRoughness);\r\n return pb.min(eV, eL) as PBShaderExp;\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(pb.max(this.sheenRoughness, 0.000001), pb.max(this.sheenRoughness, 0.000001));\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_Sheen(\r\n scope: PBInsideFunctionScope,\r\n NdotL: PBShaderExp,\r\n NdotV: PBShaderExp,\r\n sheenRoughness: PBShaderExp\r\n ) {\r\n const funcNameVSheen = 'Z_VSheen';\r\n const pb = scope.$builder;\r\n pb.func('Z_lambdaSheenNumericHelper', [pb.float('x'), pb.float('alphaG')], function () {\r\n this.$l.oneMinusAlphaSq = pb.mul(pb.sub(1, this.alphaG), pb.sub(1, this.alphaG));\r\n this.$l.a = pb.mix(21.5473, 25.3245, this.oneMinusAlphaSq);\r\n this.$l.b = pb.mix(3.82987, 3.32435, this.oneMinusAlphaSq);\r\n this.$l.c = pb.mix(0.19823, 0.16801, this.oneMinusAlphaSq);\r\n this.$l.d = pb.mix(-1.9776, -1.27393, this.oneMinusAlphaSq);\r\n this.$l.e = pb.mix(-4.32054, -4.85967, this.oneMinusAlphaSq);\r\n this.$return(\r\n pb.add(\r\n pb.div(this.a, pb.add(1, pb.mul(this.b, pb.pow(this.x, this.c)))),\r\n pb.mul(this.d, this.x),\r\n this.e\r\n )\r\n );\r\n });\r\n pb.func('Z_lambdaSheen', [pb.float('cosTheta'), pb.float('alphaG')], function () {\r\n this.$if(pb.lessThan(pb.abs(this.cosTheta), 0.5), function () {\r\n this.$return(pb.exp(this.Z_lambdaSheenNumericHelper(pb.abs(this.cosTheta), this.alphaG)));\r\n });\r\n this.$return(\r\n pb.exp(\r\n pb.sub(\r\n pb.mul(2, this.Z_lambdaSheenNumericHelper(0.5, this.alphaG)),\r\n this.Z_lambdaSheenNumericHelper(pb.sub(1, pb.abs(this.cosTheta)), this.alphaG)\r\n )\r\n )\r\n );\r\n });\r\n pb.func(\r\n funcNameVSheen,\r\n [pb.float('NdotL'), pb.float('NdotV'), pb.float('sheenRoughness')],\r\n function () {\r\n this.$l.alphaG = pb.mul(\r\n pb.max(this.sheenRoughness, 0.000001),\r\n pb.max(this.sheenRoughness, 0.000001)\r\n );\r\n this.$return(\r\n pb.clamp(\r\n pb.div(\r\n 1,\r\n pb.mul(\r\n pb.add(\r\n 1,\r\n this.Z_lambdaSheen(this.NdotV, this.alphaG),\r\n this.Z_lambdaSheen(this.NdotL, this.alphaG)\r\n ),\r\n 4,\r\n this.NdotV,\r\n this.NdotL\r\n )\r\n ),\r\n 0,\r\n 1\r\n )\r\n );\r\n }\r\n );\r\n return scope.$g[funcNameVSheen](NdotL, NdotV, 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 diffuseScale: PBShaderExp,\r\n specularScale: PBShaderExp,\r\n sourceRadiusFactor: 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.float('diffuseScale'),\r\n pb.float('specularScale'),\r\n pb.float('sourceRadiusFactor'),\r\n pb.vec3('outColor').inout()\r\n ],\r\n function () {\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.specularLightDir = this.L;\r\n this.$if(pb.greaterThan(this.sourceRadiusFactor, 0), function () {\r\n this.$l.reflectionVec = pb.reflect(pb.neg(this.viewVec), this.normal);\r\n this.$l.centerToRay = pb.sub(\r\n pb.mul(this.reflectionVec, pb.dot(this.L, this.reflectionVec)),\r\n this.L\r\n );\r\n this.$l.centerToRayLength = pb.length(this.centerToRay);\r\n this.$l.sphereLightBlend = pb.clamp(\r\n pb.div(this.sourceRadiusFactor, pb.max(this.centerToRayLength, 0.0001)),\r\n 0,\r\n 1\r\n );\r\n this.specularLightDir = pb.normalize(\r\n pb.add(this.L, pb.mul(this.centerToRay, this.sphereLightBlend))\r\n );\r\n });\r\n this.$l.H = pb.normalize(pb.add(this.viewVec, this.specularLightDir));\r\n this.$l.NoH = pb.clamp(pb.dot(this.normal, this.H), 0, 1);\r\n this.$l.specularNoL = pb.clamp(pb.dot(this.normal, this.specularLightDir), 0, 1);\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 if (that.sheen) {\r\n this.$l.sheenAlbedoScaling = that.getSheenAlbedoScalingForDirect(\r\n this,\r\n this.NoV,\r\n this.NoL,\r\n this.data.sheenColor,\r\n this.data.sheenRoughness\r\n );\r\n }\r\n this.$l.baseLayerAttenuation = pb.float(1);\r\n if (that.clearcoat) {\r\n this.$if(pb.greaterThan(this.data.ccFactor.x, 0), function () {\r\n this.$l.ccF0 = pb.vec3(\r\n pb.pow(pb.div(pb.sub(this.data.f0.a, 1), pb.add(this.data.f0.a, 1)), 2)\r\n );\r\n this.$l.clearcoatF = that.fresnelSchlick(this, this.VoH, this.ccF0, pb.vec3(1));\r\n this.baseLayerAttenuation = pb.clamp(\r\n pb.sub(1, pb.mul(this.clearcoatF.r, this.data.ccFactor.x)),\r\n 0,\r\n 1\r\n );\r\n });\r\n }\r\n this.$l.alphaRoughness = pb.mul(this.data.roughness, this.data.roughness);\r\n this.$l.specularRoughness = pb.sqrt(this.alphaRoughness);\r\n this.$l.D = that.distributionGGX(this, this.NoH, this.alphaRoughness);\r\n this.$l.V = that.visGGX(this, this.NoV, this.specularNoL, this.alphaRoughness);\r\n this.$l.specular = pb.mul(\r\n this.lightColor,\r\n this.D,\r\n this.V,\r\n this.F,\r\n this.data.specularWeight,\r\n this.specularScale\r\n );\r\n this.specular = pb.mul(this.specular, this.baseLayerAttenuation);\r\n if (that.sheen) {\r\n this.specular = pb.mul(this.specular, this.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(\r\n this.lightColor,\r\n pb.max(this.diffuseBRDF, pb.vec3(0)),\r\n this.diffuseScale\r\n );\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.sheenAlbedoScaling);\r\n }\r\n this.diffuse = pb.mul(this.diffuse, this.baseLayerAttenuation);\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_Sheen(this, this.NoL, this.NoV, this.data.sheenRoughness);\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.$l.clearcoatAlphaRoughness = pb.mul(this.data.ccFactor.y, this.data.ccFactor.y);\r\n this.alphaRoughness = this.clearcoatAlphaRoughness;\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.specularLightDir), 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(\r\n this.outColor,\r\n pb.mul(this.lightColor, 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](\r\n lightDir,\r\n lightColor,\r\n normal,\r\n viewVec,\r\n commonData,\r\n diffuseScale,\r\n specularScale,\r\n sourceRadiusFactor,\r\n outColor\r\n );\r\n }\r\n directRectLight(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n commonData: PBShaderExp,\r\n posRange: PBShaderExp,\r\n axisX: PBShaderExp,\r\n axisY: PBShaderExp,\r\n colorIntensity: PBShaderExp,\r\n outColor: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const physical = this.drawContext.scene.lightingMode === 'physical';\r\n // The two modes normalize the LTC integral differently, so they must not share a cached\r\n // function body under one name.\r\n const funcName = physical ? 'Z_PBRRectLightPhysical' : 'Z_PBRRectLight';\r\n const LUT_SIZE = 64;\r\n const LUT_SCALE = (LUT_SIZE - 1) / LUT_SIZE;\r\n const LUT_BIAS = 0.5 / LUT_SIZE;\r\n pb.func('Z_LTCIntegrateEdgeVec', [pb.vec3('v1'), pb.vec3('v2')], function () {\r\n this.$l.x = pb.dot(this.v1, this.v2);\r\n this.$l.y = pb.abs(this.x);\r\n this.$l.a = pb.add(0.8543985, pb.mul(pb.add(0.4965155, pb.mul(0.0145206, this.y)), this.y));\r\n this.$l.b = pb.add(3.417594, pb.mul(pb.add(4.1616724, this.y), this.y));\r\n this.$l.v = pb.div(this.a, this.b);\r\n this.$l.thetaSinTheta = this.$choice(\r\n pb.greaterThan(this.x, 0),\r\n this.v,\r\n pb.sub(pb.mul(0.5, pb.inverseSqrt(pb.max(pb.sub(1, pb.mul(this.x, this.x)), 1e-7))), this.v)\r\n );\r\n this.$return(pb.mul(pb.cross(this.v1, this.v2), this.thetaSinTheta));\r\n });\r\n pb.func('Z_LTCClipQuadToHorizon', [pb.vec3[5]('L').inout(), pb.int('n').out()], function () {\r\n this.$l.config = pb.int(0);\r\n this.$if(pb.greaterThan(this.L[0].z, 0), function () {\r\n this.config = pb.add(this.config, 1);\r\n });\r\n this.$if(pb.greaterThan(this.L[1].z, 0), function () {\r\n this.config = pb.add(this.config, 2);\r\n });\r\n this.$if(pb.greaterThan(this.L[2].z, 0), function () {\r\n this.config = pb.add(this.config, 4);\r\n });\r\n this.$if(pb.greaterThan(this.L[3].z, 0), function () {\r\n this.config = pb.add(this.config, 8);\r\n });\r\n this.n = 0;\r\n this.$if(pb.equal(this.config, 0), function () {})\r\n .$elseif(pb.equal(this.config, 1), function () {\r\n this.n = 3;\r\n this.L[1] = pb.add(pb.mul(pb.neg(this.L[1].z), this.L[0]), pb.mul(this.L[0].z, this.L[1]));\r\n this.L[2] = pb.add(pb.mul(pb.neg(this.L[3].z), this.L[0]), pb.mul(this.L[0].z, this.L[3]));\r\n })\r\n .$elseif(pb.equal(this.config, 2), function () {\r\n this.n = 3;\r\n this.L[0] = pb.add(pb.mul(pb.neg(this.L[0].z), this.L[1]), pb.mul(this.L[1].z, this.L[0]));\r\n this.L[2] = pb.add(pb.mul(pb.neg(this.L[2].z), this.L[1]), pb.mul(this.L[1].z, this.L[2]));\r\n })\r\n .$elseif(pb.equal(this.config, 3), function () {\r\n this.n = 4;\r\n this.L[2] = pb.add(pb.mul(pb.neg(this.L[2].z), this.L[1]), pb.mul(this.L[1].z, this.L[2]));\r\n this.L[3] = pb.add(pb.mul(pb.neg(this.L[3].z), this.L[0]), pb.mul(this.L[0].z, this.L[3]));\r\n })\r\n .$elseif(pb.equal(this.config, 4), function () {\r\n this.n = 3;\r\n this.L[0] = pb.add(pb.mul(pb.neg(this.L[3].z), this.L[2]), pb.mul(this.L[2].z, this.L[3]));\r\n this.L[1] = pb.add(pb.mul(pb.neg(this.L[1].z), this.L[2]), pb.mul(this.L[2].z, this.L[1]));\r\n })\r\n .$elseif(pb.equal(this.config, 6), function () {\r\n this.n = 4;\r\n this.L[0] = pb.add(pb.mul(pb.neg(this.L[0].z), this.L[1]), pb.mul(this.L[1].z, this.L[0]));\r\n this.L[3] = pb.add(pb.mul(pb.neg(this.L[3].z), this.L[2]), pb.mul(this.L[2].z, this.L[3]));\r\n })\r\n .$elseif(pb.equal(this.config, 7), function () {\r\n this.n = 5;\r\n this.L[4] = pb.add(pb.mul(pb.neg(this.L[3].z), this.L[0]), pb.mul(this.L[0].z, this.L[3]));\r\n this.L[3] = pb.add(pb.mul(pb.neg(this.L[3].z), this.L[2]), pb.mul(this.L[2].z, this.L[3]));\r\n })\r\n .$elseif(pb.equal(this.config, 8), function () {\r\n this.n = 3;\r\n this.L[0] = pb.add(pb.mul(pb.neg(this.L[0].z), this.L[3]), pb.mul(this.L[3].z, this.L[0]));\r\n this.L[1] = pb.add(pb.mul(pb.neg(this.L[2].z), this.L[3]), pb.mul(this.L[3].z, this.L[2]));\r\n this.L[2] = this.L[3];\r\n })\r\n .$elseif(pb.equal(this.config, 9), function () {\r\n this.n = 4;\r\n this.L[1] = pb.add(pb.mul(pb.neg(this.L[1].z), this.L[0]), pb.mul(this.L[0].z, this.L[1]));\r\n this.L[2] = pb.add(pb.mul(pb.neg(this.L[2].z), this.L[3]), pb.mul(this.L[3].z, this.L[2]));\r\n })\r\n .$elseif(pb.equal(this.config, 11), function () {\r\n this.n = 5;\r\n this.L[4] = this.L[3];\r\n this.L[3] = pb.add(pb.mul(pb.neg(this.L[2].z), this.L[3]), pb.mul(this.L[3].z, this.L[2]));\r\n this.L[2] = pb.add(pb.mul(pb.neg(this.L[2].z), this.L[1]), pb.mul(this.L[1].z, this.L[2]));\r\n })\r\n .$elseif(pb.equal(this.config, 12), function () {\r\n this.n = 4;\r\n this.L[1] = pb.add(pb.mul(pb.neg(this.L[1].z), this.L[2]), pb.mul(this.L[2].z, this.L[1]));\r\n this.L[0] = pb.add(pb.mul(pb.neg(this.L[0].z), this.L[3]), pb.mul(this.L[3].z, this.L[0]));\r\n })\r\n .$elseif(pb.equal(this.config, 13), function () {\r\n this.n = 5;\r\n this.L[4] = this.L[3];\r\n this.L[3] = this.L[2];\r\n this.L[2] = pb.add(pb.mul(pb.neg(this.L[1].z), this.L[2]), pb.mul(this.L[2].z, this.L[1]));\r\n this.L[1] = pb.add(pb.mul(pb.neg(this.L[1].z), this.L[0]), pb.mul(this.L[0].z, this.L[1]));\r\n })\r\n .$elseif(pb.equal(this.config, 14), function () {\r\n this.n = 5;\r\n this.L[4] = pb.add(pb.mul(pb.neg(this.L[0].z), this.L[3]), pb.mul(this.L[3].z, this.L[0]));\r\n this.L[0] = pb.add(pb.mul(pb.neg(this.L[0].z), this.L[1]), pb.mul(this.L[1].z, this.L[0]));\r\n })\r\n .$elseif(pb.equal(this.config, 15), function () {\r\n this.n = 4;\r\n });\r\n this.$if(pb.equal(this.n, 3), function () {\r\n this.L[3] = this.L[0];\r\n });\r\n this.$if(pb.equal(this.n, 4), function () {\r\n this.L[4] = this.L[0];\r\n });\r\n });\r\n pb.func(\r\n 'Z_LTCEvaluateRect',\r\n [\r\n pb.vec3('N'),\r\n pb.vec3('V'),\r\n pb.vec3('P'),\r\n pb.mat3('Minv'),\r\n pb.vec3('p0'),\r\n pb.vec3('p1'),\r\n pb.vec3('p2'),\r\n pb.vec3('p3')\r\n ],\r\n function () {\r\n this.$l.T1 = pb.normalize(pb.sub(this.V, pb.mul(this.N, pb.dot(this.V, this.N))));\r\n this.$l.T2 = pb.cross(this.N, this.T1);\r\n if (pb.getDevice().type === 'webgl') {\r\n this.$l.ltcBasis = pb.mat3(\r\n pb.vec3(this.T1.x, this.T2.x, this.N.x),\r\n pb.vec3(this.T1.y, this.T2.y, this.N.y),\r\n pb.vec3(this.T1.z, this.T2.z, this.N.z)\r\n );\r\n this.$l.ltcMatrix = pb.mul(this.Minv, this.ltcBasis);\r\n } else {\r\n this.$l.ltcMatrix = pb.mul(this.Minv, pb.transpose(pb.mat3(this.T1, this.T2, this.N)));\r\n }\r\n this.$l.L = pb.vec3[5]();\r\n this.L[0] = pb.mul(this.ltcMatrix, pb.sub(this.p0, this.P));\r\n this.L[1] = pb.mul(this.ltcMatrix, pb.sub(this.p1, this.P));\r\n this.L[2] = pb.mul(this.ltcMatrix, pb.sub(this.p2, this.P));\r\n this.L[3] = pb.mul(this.ltcMatrix, pb.sub(this.p3, this.P));\r\n this.$l.n = pb.int(0);\r\n this.Z_LTCClipQuadToHorizon(this.L, this.n);\r\n this.$if(pb.equal(this.n, 0), function () {\r\n this.$return(pb.vec3(0));\r\n });\r\n this.L[0] = pb.normalize(this.L[0]);\r\n this.L[1] = pb.normalize(this.L[1]);\r\n this.L[2] = pb.normalize(this.L[2]);\r\n this.L[3] = pb.normalize(this.L[3]);\r\n this.L[4] = pb.normalize(this.L[4]);\r\n this.$l.sum = pb.float(0);\r\n this.sum = pb.add(this.sum, this.Z_LTCIntegrateEdgeVec(this.L[0], this.L[1]).z);\r\n this.sum = pb.add(this.sum, this.Z_LTCIntegrateEdgeVec(this.L[1], this.L[2]).z);\r\n this.sum = pb.add(this.sum, this.Z_LTCIntegrateEdgeVec(this.L[2], this.L[3]).z);\r\n this.$if(pb.greaterThanEqual(this.n, 4), function () {\r\n this.sum = pb.add(this.sum, this.Z_LTCIntegrateEdgeVec(this.L[3], this.L[4]).z);\r\n });\r\n this.$if(pb.equal(this.n, 5), function () {\r\n this.sum = pb.add(this.sum, this.Z_LTCIntegrateEdgeVec(this.L[4], this.L[0]).z);\r\n });\r\n this.sum = pb.max(0, this.sum);\r\n this.$return(pb.vec3(this.sum));\r\n }\r\n );\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec3('worldPos'),\r\n pb.vec3('normal'),\r\n pb.vec3('viewVec'),\r\n that.getCommonDatasStruct(scope)('data'),\r\n pb.vec4('posRange'),\r\n pb.vec4('axisX'),\r\n pb.vec4('axisY'),\r\n pb.vec4('colorIntensity'),\r\n pb.vec3('outColor').inout()\r\n ],\r\n function () {\r\n this.$l.center = this.posRange.xyz;\r\n this.$l.range = this.posRange.w;\r\n this.$l.ax = this.axisX.xyz;\r\n this.$l.ay = this.axisY.xyz;\r\n this.$l.halfWidth = pb.length(this.ax);\r\n this.$l.halfHeight = pb.length(this.ay);\r\n this.$l.area = pb.mul(this.halfWidth, this.halfHeight, 4);\r\n this.$l.lightNormal = pb.normalize(pb.cross(this.ax, this.ay));\r\n this.lightNormal = pb.neg(this.lightNormal);\r\n this.$if(pb.greaterThan(this.area, 0), function () {\r\n this.$l.ex = this.ax;\r\n this.$l.ey = this.ay;\r\n this.$l.p0 = pb.sub(pb.sub(this.center, this.ex), this.ey);\r\n this.$l.p1 = pb.add(pb.sub(this.center, this.ey), this.ex);\r\n this.$l.p2 = pb.add(pb.add(this.center, this.ex), this.ey);\r\n this.$l.p3 = pb.add(pb.sub(this.center, this.ex), this.ey);\r\n this.$l.centerToPoint = pb.sub(this.center, this.worldPos);\r\n this.$l.dist = pb.length(this.centerToPoint);\r\n this.$l.L = pb.normalize(this.centerToPoint);\r\n this.$l.NoV = pb.clamp(pb.dot(this.normal, this.viewVec), 0.0001, 1);\r\n this.$l.NoL_light = pb.clamp(pb.dot(this.lightNormal, pb.neg(this.L)), 0, 1);\r\n // Keep rect lights single-sided, but avoid applying an extra cosine falloff\r\n // on top of the LTC integral, which makes the light look noticeably dimmer.\r\n this.$if(pb.greaterThan(this.NoL_light, 1e-5), function () {\r\n this.$l.falloff = pb.float(1);\r\n this.$if(pb.greaterThan(this.range, 0), function () {\r\n this.$l.fadeStart = pb.mul(this.range, 0.9);\r\n this.falloff = pb.sub(1, pb.smoothStep(this.fadeStart, this.range, this.dist));\r\n });\r\n this.$l.uv = pb.clamp(\r\n pb.add(\r\n pb.mul(pb.vec2(this.data.roughness, pb.sqrt(pb.max(pb.sub(1, this.NoV), 0))), LUT_SCALE),\r\n pb.vec2(LUT_BIAS)\r\n ),\r\n pb.vec2(0),\r\n pb.vec2(1)\r\n );\r\n this.$l.t1 = pb.textureSampleLevel(this.zLTCMatLut, this.uv, 0);\r\n this.$l.t2 = pb.textureSampleLevel(this.zLTCAmpLut, this.uv, 0);\r\n this.$l.Minv = pb.mat3(\r\n pb.vec3(this.t1.x, 0, this.t1.y),\r\n pb.vec3(0, 1, 0),\r\n pb.vec3(this.t1.z, 0, this.t1.w)\r\n );\r\n this.$l.spec = this.Z_LTCEvaluateRect(\r\n this.normal,\r\n this.viewVec,\r\n this.worldPos,\r\n this.Minv,\r\n this.p0,\r\n this.p1,\r\n this.p2,\r\n this.p3\r\n );\r\n this.$l.diff = this.Z_LTCEvaluateRect(\r\n this.normal,\r\n this.viewVec,\r\n this.worldPos,\r\n pb.mat3(pb.vec3(1, 0, 0), pb.vec3(0, 1, 0), pb.vec3(0, 0, 1)),\r\n this.p0,\r\n this.p1,\r\n this.p2,\r\n this.p3\r\n );\r\n this.$l.lightColor = pb.mul(this.colorIntensity.rgb, this.colorIntensity.a, this.falloff);\r\n this.$l.baseF0 = this.data.f0.rgb;\r\n this.$l.rectSpecularScale = that.getRectSpecularScale(this);\r\n // Z_LTCEvaluateRect returns the raw edge sum; the reference implementation normalizes\r\n // it by 1/(2*pi). Physical applies that so the authored luminance (cd/m²) is\r\n // reproduced and diffuse/specular keep their correct ratio -- previously diffuse was\r\n // divided by pi and specular by nothing, leaving specular pi times too strong.\r\n //\r\n // Legacy deliberately keeps the historical (unnormalized) weighting: its rect\r\n // intensity is unitless and existing scenes are calibrated against it.\r\n const ltcNormalization = physical ? 1 / (2 * Math.PI) : 1;\r\n const diffuseNormalization = physical ? 1 / (2 * Math.PI) : 1 / Math.PI;\r\n this.$l.specularLtc = pb.mul(\r\n this.spec,\r\n pb.add(pb.mul(this.baseF0, this.t2.x), pb.mul(pb.sub(pb.vec3(1), this.baseF0), this.t2.y)),\r\n this.data.specularWeight,\r\n this.rectSpecularScale,\r\n ltcNormalization\r\n );\r\n this.$l.diffuseLtc = pb.mul(this.diff, pb.mul(this.data.diffuse.rgb, diffuseNormalization));\r\n this.outColor = pb.add(\r\n this.outColor,\r\n pb.mul(this.lightColor, pb.add(this.diffuseLtc, this.specularLtc))\r\n );\r\n });\r\n });\r\n }\r\n );\r\n scope.$g[funcName](\r\n worldPos,\r\n normal,\r\n viewVec,\r\n commonData,\r\n posRange,\r\n axisX,\r\n axisY,\r\n colorIntensity,\r\n outColor\r\n );\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 outDiffuseColor?: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n const ctx = that.drawContext;\r\n const useReprojectedSSGI = !!(\r\n ctx.SSGI &&\r\n ctx.SSGIIrradianceHistoryTexture &&\r\n ctx.SSGISurfaceHistoryTexture &&\r\n (ctx.device.type !== 'webgpu' || ctx.motionVectorTexture)\r\n );\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 ...(outDiffuseColor ? [pb.vec3('outDiffuseColor').inout()] : [])\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 const envLightSpecularStrength = ShaderHelper.getEnvLightSpecularStrength(this);\r\n if (that.occlusionTexture) {\r\n const occlusionSample = that.sampleOcclusionTexture(this).r;\r\n this.$l.ambientOcclusion = pb.add(pb.mul(this.zOcclusionStrength, pb.sub(occlusionSample, 1)), 1);\r\n this.$l.occlusion = pb.mul(this.ambientOcclusion, envLightStrength);\r\n } else {\r\n this.$l.ambientOcclusion = pb.float(1);\r\n this.$l.occlusion = envLightStrength;\r\n }\r\n this.$l.diffuseOcclusion = useReprojectedSSGI ? this.ambientOcclusion : this.occlusion;\r\n this.$l.NoV = pb.clamp(pb.dot(this.normal, this.viewVec), 0.0001, 1);\r\n if (that.sheen) {\r\n this.$l.sheenLutSample = pb.clamp(\r\n pb.textureSampleLevel(\r\n this.zSheenLut,\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 );\r\n this.$l.sheenAlbedoScaling = pb.sub(\r\n 1,\r\n pb.mul(\r\n pb.max(pb.max(this.data.sheenColor.r, this.data.sheenColor.g), this.data.sheenColor.b),\r\n this.sheenLutSample.r\r\n )\r\n );\r\n }\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.clearcoat) {\r\n this.$if(pb.greaterThan(this.data.ccFactor.x, 0), function () {\r\n this.specularFactor = pb.mul(\r\n this.specularFactor,\r\n pb.clamp(pb.sub(1, pb.mul(this.data.ccFresnel, this.data.ccFactor.x)), 0, 1)\r\n );\r\n });\r\n }\r\n if (that.sheen) {\r\n this.specularFactor = pb.mul(this.specularFactor, this.sheenAlbedoScaling);\r\n }\r\n if (outRoughness) {\r\n this.outRoughness = pb.vec4(this.specularFactor /*this.data.f0.rgb*/, this.data.roughness);\r\n }\r\n // Skip specular IBL only when the roughness target exists, since SSR\r\n // is its only requester and resolves the reflection from it; adding\r\n // it here too would count it twice. `outRoughness` alone is not that\r\n // signal: SSGI requests the scene normal target and materials raise\r\n // the roughness and normal flags together, so an SSGI-only frame\r\n // wrote outRoughness with nobody to resolve the reflection, which\r\n // silently dropped specular highlights. Keyed on the flag rather\r\n // than ctx.SSR because the flag is part of the light pass shader\r\n // hash, so cached programs cannot outlive a change here.\r\n const ssrResolvesSpecular = !!(ctx.materialFlags & MaterialVaryingFlags.SCENE_STORE_ROUGHNESS);\r\n if (!ssrResolvesSpecular && 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(\r\n this.outColor,\r\n pb.mul(this.radiance, this.specularFactor, envLightSpecularStrength)\r\n );\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, ctx);\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 this.irradiance,\r\n this.diffuseOcclusion\r\n );\r\n if (that.clearcoat) {\r\n this.$if(pb.greaterThan(this.data.ccFactor.x, 0), function () {\r\n this.iblDiffuse = pb.mul(\r\n this.iblDiffuse,\r\n pb.clamp(pb.sub(1, pb.mul(this.data.ccFresnel, this.data.ccFactor.x)), 0, 1)\r\n );\r\n });\r\n }\r\n if (that.sheen) {\r\n this.iblDiffuse = pb.mul(this.iblDiffuse, this.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 if (outDiffuseColor) {\r\n this.outDiffuseColor = pb.add(this.outDiffuseColor, this.iblDiffuse);\r\n }\r\n }\r\n if (\r\n that.sheen &&\r\n (ctx.env!.light.envLight.hasSheenRadiance() || ctx.env!.light.envLight.hasIrradiance())\r\n ) {\r\n this.$l.sheenBRDF = this.sheenLutSample.b;\r\n if (ctx.env!.light.envLight.hasSheenRadiance()) {\r\n this.$l.sheenRadiance = ctx.env!.light.envLight.getSheenRadiance(\r\n this,\r\n pb.reflect(pb.neg(this.viewVec), this.normal),\r\n this.data.sheenRoughness\r\n );\r\n this.outColor = pb.add(\r\n this.outColor,\r\n pb.mul(this.data.sheenColor, this.sheenRadiance, this.sheenBRDF, this.occlusion)\r\n );\r\n } else {\r\n this.outColor = pb.add(\r\n this.outColor,\r\n pb.mul(this.data.sheenColor, this.irradiance.rgb, this.sheenBRDF, this.occlusion)\r\n );\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(\r\n pb.vec3(pb.sub(1, this.data.ccFactor.y)),\r\n pb.vec3(pb.pow(pb.div(pb.sub(this.data.f0.a, 1), pb.add(this.data.f0.a, 1)), 2))\r\n ),\r\n pb.vec3(pb.pow(pb.div(pb.sub(this.data.f0.a, 1), pb.add(this.data.f0.a, 1)), 2))\r\n );\r\n this.$l.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.$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, envLightSpecularStrength);\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 && outDiffuseColor) {\r\n scope.$g[funcName](normal, viewVec, commonData, outColor, outRoughness, outDiffuseColor);\r\n } else if (outRoughness) {\r\n scope.$g[funcName](normal, viewVec, commonData, outColor, outRoughness);\r\n } else if (outDiffuseColor) {\r\n scope.$g[funcName](normal, viewVec, commonData, outColor, outDiffuseColor);\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","EMISSIVE_LUMINANCE_UNIFORM","EMISSIVE_EXPOSURE_WEIGHT_UNIFORM","RECT_SPECULAR_SCALE_UNIFORM","cls","_f0","_emissiveColor","_emissiveStrength","_emissiveLuminance","_emissiveExposureWeight","_occlusionStrength","_rectSpecularScale","_sheenFactor","_clearcoatFactor","_transmissionFactor","_thicknessFactor","_attenuationColor","_attenuationDistance","_iridescenceFactor","Vector4","Vector3","zero","one","copyFrom","other","ior","transmissionFactor","thicknessFactor","attenuationColor","attenuationDistance","iridescenceFactor","iridescenceIor","iridescenceThicknessMin","iridescenceThicknessMax","occlusionStrength","rectSpecularScale","emissiveColor","emissiveStrength","emissiveLuminance","emissiveExposureWeight","transmission","iridescence","clearcoat","clearcoatIntensity","clearcoatRoughnessFactor","sheen","sheenColorFactor","sheenRoughnessFactor","w","val","k","setXYZW","uniformChanged","equalsTo","set","x","y","z","luminance","Math","max","weight","min","featureUsed","useFeature","xyz","vertexShader","scope","needFragmentColor","drawContext","materialFlags","MaterialVaryingFlags","INSTANCING","$outputs","zEmissiveColor","getInstancedUniform","zEmissiveStrength","zEmissiveLuminance","zEmissiveExposureWeight","zRectSpecularScale","fragmentShader","pb","$builder","zF0","vec4","uniform","vec3","float","occlusionTexture","zOcclusionStrength","zSheenFactor","zSheenLut","tex2D","zClearcoatFactor","needsTransmissionData","zTransmissionFactor","zThicknessFactor","zAttenuationColor","zAttenuationDistance","zIridescenceFactor","drawEnvLight","zGGXLut","zLTCMatLut","zLTCAmpLut","needSceneColor","applyUniformValues","bindGroup","ctx","pass","setValue","setTexture","getSheenLUT","getGGXLUT","getLTCMatLUT","getLTCAmpLUT","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","clearcoatNormalTexture","ccNormal","sub","sampleClearcoatNormalTexture","zz","normalize","ccNoV","clamp","dot","ccFactor","clearcoatIntensityTexture","sampleClearcoatIntensityTexture","r","clearcoatRoughnessTexture","sampleClearcoatRoughnessTexture","g","ccF0Scalar","pow","div","f0","add","ccFresnel","transmissionTexture","sampleTransmissionTexture","thicknessTexture","sampleThicknessTexture","iridescenceTexture","sampleIridescenceTexture","iridescenceThicknessTexture","mix","sampleIridescenceThicknessTexture","iridescenceFresnel","evalIridescence","iridescenceF0","schlickToF0","getEmissiveColor","instancing","$inputs","getEmissiveLuminance","getEmissiveStrength","getEmissiveExposureWeight","getRectSpecularScale","needsSSSTransmissionData","subsurfaceProfile","renderPass","type","RENDER_PASS_TYPE_LIGHT","calculateEmissiveColor","strength","scene","lightingMode","base","emissiveTexture","sampleEmissiveTexture","attenuation","ShaderHelper","getPreExposureUniform","getSheenAlbedoScaling","Ndot","sheenE","textureSampleLevel","vec2","maxSheenColor","b","getSheenAlbedoScalingForDirect","NoV","NoL","eV","eL","D_Charlie","NdotH","funcNameDCharlie","alphaG","invR","cos2h","sin2h","PI","V_Sheen","NdotL","NdotV","funcNameVSheen","oneMinusAlphaSq","c","d","e","$if","lessThan","abs","cosTheta","exp","Z_lambdaSheenNumericHelper","Z_lambdaSheen","V_Ashikhmin","funcNameVAshikhmin","getVolumeTransmissionRay","thickness","refractionVector","refract","neg","modelScale","getGlobalScope","getTransmissionSample","fragCoord","roughness","applyIorToRoughness","framebufferLod","log2","getSceneColorTextureSize","getSceneColorTexture","getPunctualRadianceTransmission","lightDir","alphaRoughness","f90","baseColor","transmissionRoughness","mirrorL","L","h","D","distributionGGX","F","fresnelSchlick","V","visGGX","applyVolumeAttenuation","radiance","transmissionDistance","equal","$else","attenuationCoefficient","log","transmittance","getIBLVolumnRefraction","brdf","position","transmissionRay","transmissionRayLength","length","refractedRayExit","ndcPos","getViewProjectionMatrix","refractionCoords","xy","transmittedLight","attColor","specularColor","directLighting","lightColor","commonData","diffuseScale","specularScale","sourceRadiusFactor","outColor","inout","greaterThan","specularLightDir","reflectionVec","reflect","centerToRay","centerToRayLength","sphereLightBlend","H","NoH","specularNoL","VoH","schlickFresnel","sheenAlbedoScaling","baseLayerAttenuation","ccF0","clearcoatF","specularRoughness","sqrt","specular","specularWeight","iridescenceFresnelMax","diffuseBRDF","diffuse","pointToLight","sheenD","sheenV","clearcoatAlphaRoughness","directRectLight","worldPos","posRange","axisX","axisY","colorIntensity","physical","LUT_SIZE","LUT_SCALE","LUT_BIAS","v1","v2","v","thetaSinTheta","$choice","inverseSqrt","cross","int","out","config","n","$elseif","T1","N","T2","getDevice","ltcBasis","ltcMatrix","Minv","transpose","p0","P","p1","p2","p3","Z_LTCClipQuadToHorizon","sum","Z_LTCIntegrateEdgeVec","greaterThanEqual","center","range","ax","ay","halfWidth","halfHeight","area","lightNormal","ex","ey","centerToPoint","dist","NoL_light","falloff","fadeStart","smoothStep","uv","t1","t2","spec","Z_LTCEvaluateRect","diff","baseF0","ltcNormalization","diffuseNormalization","specularLtc","diffuseLtc","fresnel0ToIor","fresnel0","sqrtF0","iorToFresnel0v","transmittedIor","incidentIor","t","iorToFresnel0","evalSensitivity","OPD","shift","phase","pos","va","cos","f","VdotH","x2","x5","outsideIOR","eta2","cosTheta1","thinFilmThickness","sinTheta2Sq","cosTheta2Sq","cosTheta2","R0","R12","R21","T121","phi12","phi21","baseIOR","R1","R23","phi23","phi","R123","r123","Rs","C0","I","Cm","$for","Sm","m","indirectLighting","outRoughness","outDiffuseColor","useReprojectedSSGI","SSGI","SSGIIrradianceHistoryTexture","SSGISurfaceHistoryTexture","device","motionVectorTexture","env","light","envLight","hasRadiance","hasIrradiance","envLightStrength","getEnvLightStrength","envLightSpecularStrength","getEnvLightSpecularStrength","occlusionSample","sampleOcclusionTexture","ambientOcclusion","occlusion","diffuseOcclusion","sheenLutSample","ggxLutSample","f_ab","rg","Fr","k_S","FssEss","specularFactor","ssrResolvesSpecular","SCENE_STORE_ROUGHNESS","getRadiance","irradiance","getIrradiance","iridescenceF0Max","mixedF0","Ems","F_avg","FmsEms","k_D","iblDiffuse","iblTransmission","hasSheenRadiance","sheenBRDF","sheenRadiance","getSheenRadiance","ccSpecular","defineFeature"],"mappings":"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"}
|