Class: RenderShaderPass
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:40
A single render pass of a shader: pairs a vertex and fragment shader, owns the shader state, textures, uniforms, bind group layouts and the GPURenderPipeline built from them. Each pass is bound to a single Context3D and rebuilds its pipeline lazily when its state changes.
Extends
Constructors
Constructor
new RenderShaderPass(
vs,fs):RenderShaderPass
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:118
Parameters
vs
string
Vertex shader name (must be registered in ShaderLib).
fs
string
Fragment shader name (must be registered in ShaderLib).
Returns
RenderShaderPass
Overrides
Properties
passType
passType:
PassType=PassType.COLOR
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:45
The type of pass (color, shadow, OIT accumulation, depth peel, …).
useRz
useRz:
boolean=false
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:50
Whether this pass participates in the reverse-Z depth pipeline.
vsName
vsName:
string
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:55
Vertex shader name
fsName
fsName:
string
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:60
Fragment shader name
shaderState
shaderState:
ShaderState
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:65
State of the shader
textures
textures:
object
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:70
The collection of textures used in shading
Index Signature
[name: string]: Texture
pipeline
pipeline:
GPURenderPipeline=null
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:77
Render pipeline. Plan B: one pipeline per RenderShaderPass, bound to a single Context3D. Attempts to use this pass with a second engine throw via bindCtx.
bindGroupLayouts
bindGroupLayouts:
GPUBindGroupLayout[] =[]
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:82
BindGroup layouts (single-field, bound to one Context3D)
envMap
envMap:
Texture
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:89
Environment cube map used for image-based lighting.
prefilterMap
prefilterMap:
Texture
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:94
Pre-filtered environment map used for specular IBL.
reflectionMap
reflectionMap:
Texture
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:98
Reflection cube map used for environment reflections.
outBufferMask
outBufferMask:
Vector4
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:112
Per-channel write mask applied to the pass's output buffer.
instanceID
readonlyinstanceID:string
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:27
Shader Unique instance id
Inherited from
shaderVariant
shaderVariant:
string
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:32
Shader variant value
Inherited from
vsEntryPoint
vsEntryPoint:
string
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:37
Vertex stage entry point name
Inherited from
fsEntryPoint
fsEntryPoint:
string
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:42
Fragment stage entry point name
Inherited from
_boundCtx
_boundCtx:
Context3D=null
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:48
The Context3D this pass is bound to. Set on first GPU use via bindCtx. Plan B: a ShaderPass may only be used by one Engine3D.
Inherited from
bindGroups
bindGroups:
GPUBindGroup[] =[]
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:53
BindGroups — single array owned by the bound Context3D.
Inherited from
shaderReflection
shaderReflection:
ShaderReflection
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:58
Shader reflection info
Inherited from
ShaderPassBase.shaderReflection
defineValue
defineValue:
object
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:63
The defined syntax value of the Shader when it is precompiled
Index Signature
[name: string]: any
Inherited from
constValues
constValues:
object
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:68
The constant value of the Shader when it is precompiled
Index Signature
[name: string]: any
Inherited from
uniforms
uniforms:
object
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:73
Uniforms data collection
Index Signature
[name: string]: UniformNode
Inherited from
materialDataUniformBuffer
materialDataUniformBuffer:
MaterialDataUniformGPUBuffer
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:78
Uniform data for materials
Inherited from
ShaderPassBase.materialDataUniformBuffer
Accessors
renderOrder
Get Signature
get renderOrder():
number
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:153
Blend mode
Returns
number
Set Signature
set renderOrder(
value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:157
Parameters
value
number
Returns
void
doubleSide
Get Signature
get doubleSide():
boolean
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:167
Cull mode
Returns
boolean
Set Signature
set doubleSide(
value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:171
Parameters
value
boolean
Returns
void
depthWriteEnabled
Get Signature
get depthWriteEnabled():
boolean
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:182
depthWriteEnabled mode
Returns
boolean
Set Signature
set depthWriteEnabled(
value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:186
Parameters
value
boolean
Returns
void
cullMode
Get Signature
get cullMode():
GPUCullMode
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:196
get render face cull mode
Returns
GPUCullMode
Set Signature
set cullMode(
value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:203
set render face cull mode
Parameters
value
GPUCullMode
Returns
void
frontFace
Get Signature
get frontFace():
GPUFrontFace
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:214
get front face mode
GPUFront Face
Returns
GPUFrontFace
Set Signature
set frontFace(
value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:222
set front face mode
GPUFront Face
value
Parameters
value
GPUFrontFace
Returns
void
depthBias
Get Signature
get depthBias():
number
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:232
Depth bias
Returns
number
Set Signature
set depthBias(
value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:236
Parameters
value
number
Returns
void
topology
Get Signature
get topology():
GPUPrimitiveTopology
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:246
Primitive topology
Returns
GPUPrimitiveTopology
Set Signature
set topology(
value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:250
Parameters
value
GPUPrimitiveTopology
Returns
void
blendMode
Get Signature
get blendMode():
BlendMode
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:260
Blend mode
Returns
Set Signature
set blendMode(
value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:264
Parameters
value
Returns
void
depthCompare
Get Signature
get depthCompare():
GPUCompareFunction
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:277
Depth compare function
Returns
GPUCompareFunction
Set Signature
set depthCompare(
value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:281
Parameters
value
GPUCompareFunction
Returns
void
stencilFront
Get Signature
get stencilFront():
GPUStencilFaceState
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:291
Stencil front face state
Returns
GPUStencilFaceState
Set Signature
set stencilFront(
value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:295
Parameters
value
GPUStencilFaceState
Returns
void
stencilBack
Get Signature
get stencilBack():
GPUStencilFaceState
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:303
Stencil back face state
Returns
GPUStencilFaceState
Set Signature
set stencilBack(
value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:307
Parameters
value
GPUStencilFaceState
Returns
void
stencilReadMask
Get Signature
get stencilReadMask():
number
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:315
Stencil read mask
Returns
number
Set Signature
set stencilReadMask(
value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:319
Parameters
value
number
Returns
void
stencilWriteMask
Get Signature
get stencilWriteMask():
number
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:329
Stencil write mask
Returns
number
Set Signature
set stencilWriteMask(
value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:333
Parameters
value
number
Returns
void
stencilRef
Get Signature
get stencilRef():
number
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:343
Stencil reference value (used with setStencilReference)
Returns
number
Set Signature
set stencilRef(
value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:347
Parameters
value
number
Returns
void
baseColor
Get Signature
get baseColor():
Color
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:417
Base color tint, backed by the baseColor uniform.
Returns
Set Signature
set baseColor(
value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:421
Parameters
value
Returns
void
Methods
setShaderEntry()
setShaderEntry(
vsEntryPoint?,fsEntryPoint?):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:356
Sets the entry point names for the RenderShader vertex phase and fragment phase
Parameters
vsEntryPoint?
string = ''
fsEntryPoint?
string = ''
Returns
void
setUniform()
setUniform(
name,value):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:366
Parameters
name
string
value
any
Returns
void
Overrides
setTexture()
setTexture(
name,texture):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:376
Set the texture used in the Render Shader code
Parameters
name
string
Name in the shader code
texture
Texture object
Returns
void
getTexture()
getTexture(
name):Texture
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:430
Get the texture used in the Render Shader code
Parameters
name
string
Name in the shader code
Returns
Texture object
declareBinding()
declareBinding(
name,handleName):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:449
Declare that the material slot name should be sourced from a Frame Graph resource handle rather than a pre-bound Texture. Resolution is deferred until resolveBindings(view) runs — the graph's resource pool may not have produced the GPUTexture yet when the declaration happens.
A frame-graph-aware feature can hand its material a named handle at setup time, and the RenderNode.nodeUpdate path keeps working in parallel. No behavior change when declareBinding is never called.
Parameters
name
string
Shader-side texture binding name (e.g. shadowMap).
handleName
string
Frame Graph handle name (e.g. _MainShadowMap).
Returns
void
getDeclaredBinding()
getDeclaredBinding(
name):string
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:458
Return the declared handle name for a material slot, or null if the slot is not backed by a Frame Graph handle.
Parameters
name
string
Returns
string
resolveBindings()
resolveBindings(
view):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:471
Walk declared bindings and push the current frame's resolved textures into the material via setTexture. Safe to call every frame — setTexture is a no-op when the resolved texture is identity-equal to the previously bound one.
No-op unless view.renderGraph is present (legacy path) and the pool actually holds the declared resource.
Parameters
view
renderGraph?
{ pool: { has: boolean; get: T; }; }
renderGraph.pool
{ has: boolean; get: T; }
renderGraph.pool.has
renderGraph.pool.get
Returns
void
genRenderPipeline()
genRenderPipeline(
geometry,renderPassState):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:493
Create a rendering pipeline
Parameters
geometry
renderPassState
RendererPassState
Returns
void
reBuild()
reBuild(
geometry,rendererPassState):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:503
Recompile the shader and create the rendering pipeline
Parameters
geometry
rendererPassState
RendererPassState
Returns
void
apply()
apply(
ctx,geometry,rendererPassState,noticeFun?):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:523
Apply render shader state value
Parameters
ctx
geometry
rendererPassState
RendererPassState
noticeFun?
Function
Returns
void
preCompile()
preCompile(
geometry):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:566
Precompile the shader code
Parameters
geometry
Returns
void
applyPostDefine()
applyPostDefine(
shader,renderPassState):string
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:579
Apply defines syntax values
Parameters
shader
string
renderPassState
RendererPassState
Returns
string
setBindGroup()
setBindGroup(
groupIndex,group):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:607
Set GPUBindGroup to the specified index slot
Parameters
groupIndex
number
group
GPUBindGroup
Returns
void
clone()
clone():
RenderShaderPass
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:1359
Deep-copy this pass into a fresh instance with its own GPU lifecycle.
Why this exists: Material.clone() → Shader.clone() used to share the same RenderShaderPass instance between source and clones. When the clone's material was destroyed (Sample_AddRemove's add → remove → add path), it tore down materialDataUniformBuffer / bindGroupLayouts / pipeline on the SHARED pass — the source material and any future clones then tried to render through dead GPU resources and createBindGroup failed validation.
The clone re-runs the (sub)class constructor via this.constructor so subclass-specific setup (CastShadowMaterialPass uniforms, OITAccumPass entry points, …) is preserved, then overlays the source's user-modified state. Texture / external-buffer references are shared (their lifetime is owner-managed); UniformNode values are copied so vector mutations on one material don't leak into the other; materialDataUniformBuffer and the pipeline objects stay fresh from the constructor so the next apply() rebuilds cleanly under the cloned material's own ownership.
Returns
RenderShaderPass
destroy()
destroy(
force?):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:1416
Destroy and release render shader related resources
Parameters
force?
boolean
Returns
void
Overrides
destroyShader()
staticdestroyShader(ctx,instanceID):void
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:1449
Destroy a RenderShader object
Parameters
ctx
Context3D owning the shader cache
instanceID
string
instance ID of the RenderShader
Returns
void
getShader()
staticgetShader(ctx,instanceID):RenderShaderPass
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:1464
Get the RenderShader object by specifying the RenderShader instance ID
Parameters
ctx
Context3D owning the shader cache
instanceID
string
instance ID of the RenderShader
Returns
RenderShaderPass
RenderShader object
createShader()
staticcreateShader(ctx,vs,fs):string
Defined in: src/gfx/graphics/webGpu/shader/RenderShaderPass.ts:1475
Create a RenderShader with vertex shaders and fragment shaders
Parameters
ctx
Context3D owning the shader cache
vs
string
Vertex shader name
fs
string
Fragment shader name
Returns
string
Returns the instance ID of the RenderShader
noticeShaderChange()
noticeShaderChange():
void
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:105
notice shader change
Returns
void
Inherited from
ShaderPassBase.noticeShaderChange
noticeValueChange()
noticeValueChange():
void
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:112
notice shader state change
Returns
void
Inherited from
ShaderPassBase.noticeValueChange
setStorageBuffer()
setStorageBuffer(
name,buffer):void
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:121
set storage gpu buffer
Parameters
name
string
buffer name
buffer
storage useAge gpu buffer
Returns
void
Inherited from
ShaderPassBase.setStorageBuffer
getStorageBuffer()
getStorageBuffer(
name):StorageGPUBuffer
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:141
Get a previously set storage gpu buffer by name.
Parameters
name
string
buffer name
Returns
Inherited from
ShaderPassBase.getStorageBuffer
setStructStorageBuffer()
setStructStorageBuffer<
T>(name,buffer):void
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:150
set struct storage gpu buffer
Type Parameters
T
T extends Struct
Parameters
name
string
buffer name
buffer
struct storage useAge gpu buffer
Returns
void
Inherited from
ShaderPassBase.setStructStorageBuffer
setUniformBuffer()
setUniformBuffer(
name,buffer):void
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:164
set uniform gpu buffer min size 256
Parameters
name
string
buffer
Returns
void
Inherited from
ShaderPassBase.setUniformBuffer
getUniformBuffer()
getUniformBuffer(
name):UniformGPUBuffer
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:177
Get a previously set uniform gpu buffer by name.
Parameters
name
string
buffer name
Returns
Inherited from
ShaderPassBase.getUniformBuffer
setDefine()
setDefine(
defineName,value):void
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:186
set define value
Parameters
defineName
string
value
any
Returns
void
Inherited from
hasDefine()
hasDefine(
defineName):boolean
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:200
Whether there is a define key
Parameters
defineName
string
Returns
boolean
Inherited from
deleteDefine()
deleteDefine(
defineName):void
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:208
delete define value
Parameters
defineName
string
Returns
void
Inherited from
setUniformFloat()
setUniformFloat(
name,value):void
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:218
set uniform float value
Parameters
name
string
value
number
Returns
void
Inherited from
ShaderPassBase.setUniformFloat
setUniformInt32()
setUniformInt32(
name,value):void
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:232
set uniform int32 value
Parameters
name
string
value
number
Returns
void
Inherited from
ShaderPassBase.setUniformInt32
setUniformVector2()
setUniformVector2(
name,value):void
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:246
set uniform vector2 value
Parameters
name
string
value
Returns
void
Inherited from
ShaderPassBase.setUniformVector2
setUniformVector3()
setUniformVector3(
name,value):void
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:260
set uniform vector3 value
Parameters
name
string
value
Returns
void
Inherited from
ShaderPassBase.setUniformVector3
setUniformVector4()
setUniformVector4(
name,value):void
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:273
set uniform vector4 value
Parameters
name
string
value
Vector4
Returns
void
Inherited from
ShaderPassBase.setUniformVector4
setUniformColor()
setUniformColor(
name,value):void
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:286
set uniform color value
Parameters
name
string
value
Returns
void
Inherited from
ShaderPassBase.setUniformColor
setUniformArray()
setUniformArray(
name,value):void
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:299
set uniform array value
Parameters
name
string
value
Float32Array
Returns
void
Inherited from
ShaderPassBase.setUniformArray
getUniform()
getUniform(
name):any
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:324
Get a uniform value by name.
Parameters
name
string
uniform name
Returns
any
Inherited from
getUniformFloat()
getUniformFloat(
name):number
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:332
Get a uniform float value by name.
Parameters
name
string
uniform name
Returns
number
Inherited from
ShaderPassBase.getUniformFloat
getUniformVector2()
getUniformVector2(
name):Vector2
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:340
Get a uniform vector2 value by name.
Parameters
name
string
uniform name
Returns
Inherited from
ShaderPassBase.getUniformVector2
getUniformVector3()
getUniformVector3(
name):Vector3
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:348
Get a uniform vector3 value by name.
Parameters
name
string
uniform name
Returns
Inherited from
ShaderPassBase.getUniformVector3
getUniformVector4()
getUniformVector4(
name):Vector4
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:356
Get a uniform vector4 value by name.
Parameters
name
string
uniform name
Returns
Vector4
Inherited from
ShaderPassBase.getUniformVector4
getUniformColor()
getUniformColor(
name):Color
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:364
Get a uniform color value by name.
Parameters
name
string
uniform name
Returns
Inherited from
ShaderPassBase.getUniformColor
getBuffer()
getBuffer(
name):GPUBufferBase
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:372
Get a registered gpu buffer by name.
Parameters
name
string
buffer name
Returns
GPUBufferBase
Inherited from
applyUniform()
applyUniform():
void
Defined in: src/gfx/graphics/webGpu/shader/ShaderPassBase.ts:387
Apply pending material uniform data to the GPU when values have changed.
Returns
void

