Documentation / device / PBShaderExp
Class: PBShaderExp
Defined in: libs/device/src/builder/base.ts:148
Base class for a expression in the shader
Extends
Proxiable<PBShaderExp>
Indexable
[
name:string]:any
Accessors
$thisProxy
Get Signature
get $thisProxy():
T
Defined in: libs/device/src/builder/base.ts:133
Returns
T
Inherited from
$group
Get Signature
get $group():
number
Defined in: libs/device/src/builder/base.ts:229
Returns
number
Set Signature
set $group(
val):void
Defined in: libs/device/src/builder/base.ts:232
Parameters
val
number
Returns
void
Methods
uniform()
uniform(
group):PBShaderExp
Defined in: libs/device/src/builder/base.ts:240
Point out that the variable should be in uniform address space
Parameters
group
number
The bind group index
Returns
PBShaderExp
self
uniformBuffer()
uniformBuffer(
group,bindingSize?):PBShaderExp
Defined in: libs/device/src/builder/base.ts:251
Point out that the variable should be an uniform buffer
Parameters
group
number
The bind group index
bindingSize?
number = 0
Returns
PBShaderExp
self
workgroup()
workgroup():
PBShaderExp
Defined in: libs/device/src/builder/base.ts:276
Point out that the variable should be in workgroup address space
Returns
PBShaderExp
self
Remarks
WebGPU device only
storage()
storage(
group):PBShaderExp
Defined in: libs/device/src/builder/base.ts:285
Point out that the variable should be in storage address space
Parameters
group
number
The bind group index
Returns
PBShaderExp
self
storageReadonly()
storageReadonly(
group):PBShaderExp
Defined in: libs/device/src/builder/base.ts:306
Point out that the variable is read-only and should be in storage address space
Parameters
group
number
The bind group index
Returns
PBShaderExp
self
storageBuffer()
storageBuffer(
group,bindingSize?):PBShaderExp
Defined in: libs/device/src/builder/base.ts:316
Point out that the variable should be a storage buffer
Parameters
group
number
The bind group index
bindingSize?
number = 0
Returns
PBShaderExp
self
storageBufferReadonly()
storageBufferReadonly(
group,bindingSize?):PBShaderExp
Defined in: libs/device/src/builder/base.ts:341
Point out that the variable is read-only and should be a storage buffer
Parameters
group
number
The bind group index
bindingSize?
number = 0
Returns
PBShaderExp
self
inout()
inout():
PBShaderExp
Defined in: libs/device/src/builder/base.ts:346
Returns
PBShaderExp
out()
out():
PBShaderExp
Defined in: libs/device/src/builder/base.ts:350
Returns
PBShaderExp
attrib()
attrib(
attr):PBShaderExp
Defined in: libs/device/src/builder/base.ts:359
Point out that the variable is a input vertex attribute
Parameters
attr
The vertex semantic
Returns
PBShaderExp
self
tag()
tag(...
args):PBShaderExp
Defined in: libs/device/src/builder/base.ts:369
Create tags for the variable
Parameters
args
...ShaderExpTagValue[]
tags
Returns
PBShaderExp
self
sampleType()
sampleType(
type):PBShaderExp
Defined in: libs/device/src/builder/base.ts:382
Set sample type for the variable if the variable is of type texture
Parameters
type
"float" | "unfilterable-float" | "depth" | "sint" | "uint"
sample type
Returns
PBShaderExp
self
noSampler()
noSampler():
PBShaderExp
Defined in: libs/device/src/builder/base.ts:402
Declares that this texture uniform is never sampled with a regular (non-comparison) sampler — it is only accessed with textureLoad, or, for depth textures, only with comparison sampling.
Returns
PBShaderExp
self
Remarks
On WebGPU every texture uniform gets an automatically bound sampler that counts against the per-stage sampler limit; use this on load-only textures (and comparison-only depth textures) to suppress it. The declaration-level hint keeps bind group layouts consistent between programs that share bind groups, which usage analysis could not guarantee.
withSampler()
withSampler(
options):PBShaderExp
Defined in: libs/device/src/builder/base.ts:423
Declares that this texture uniform is always sampled with the given static sampler configuration.
Parameters
options
The static sampler configuration
Returns
PBShaderExp
self
Remarks
On WebGPU, textures declared with the same static configuration within the same bind group share a single auto-bound sampler binding instead of each taking one, keeping heavy shaders below the per-stage sampler limit. The shared sampler is created from the given options when the bind group is built; any sampler passed to setTexture() at runtime is ignored for this texture on WebGPU. On WebGL/WebGL2 behavior is unchanged — keep passing the matching sampler to setTexture(). Comparison samplers are not supported here; depth textures keep their auto-bound comparison sampler.
at()
at(
index):PBShaderExp
Defined in: libs/device/src/builder/base.ts:435
Get element in the array by index
Parameters
index
number | PBShaderExp
index of the element
Returns
PBShaderExp
the element variable
setAt()
setAt(
index,val):void
Defined in: libs/device/src/builder/base.ts:484
Set element in the array by index
Parameters
index
number | PBShaderExp
index of the element
val
number | boolean | PBShaderExp
value to set
Returns
void
highp()
highp():
PBShaderExp
Defined in: libs/device/src/builder/base.ts:515
Point out that the variable should be in high precision
Returns
PBShaderExp
self
mediump()
mediump():
PBShaderExp
Defined in: libs/device/src/builder/base.ts:523
Points out that the variable should be in medium precision
Returns
PBShaderExp
self
lowp()
lowp():
PBShaderExp
Defined in: libs/device/src/builder/base.ts:531
Points out that the variable should be in low precision
Returns
PBShaderExp
self
isConstructor()
isConstructor():
boolean
Defined in: libs/device/src/builder/base.ts:539
Whether this is a constructor
Returns
boolean
true if this is a constructor
isVector()
isVector():
boolean
Defined in: libs/device/src/builder/base.ts:546
Determine if this variable is of vector type
Returns
boolean
true if the variable is of vector type, otherwise false
numComponents()
numComponents():
number
Defined in: libs/device/src/builder/base.ts:554
Get vector component count of the variable if this variable is of vector type
Returns
number
the vector component count
getTypeName()
getTypeName():
string
Defined in: libs/device/src/builder/base.ts:562
Get type name of this variable
Returns
string
The type name of this variable