跳到主要内容

GLBindEntryLayout

Ploy3D / GLBindEntryLayout

Interface: GLBindEntryLayout

【扩展】资源条目布局。

Table of contents

Properties

Properties

binding

binding: number

在WGSL中与组编号结合来定位UNIFORM变量。


bindingType

bindingType: number

资源绑定类型:1-buffer、2-texture、3-sampler。


buffer_hasDynamicOffset

Optional buffer_hasDynamicOffset: boolean

是否允许绑定时指定缓存偏移参数。


name

name: string

UNIFORM变量唯一名称; 着色器编译后根据名称获取到变量位置: getUniformBlockIndex 获取UNIFORM BLOCK变量索引; getUniformLocation 获取UNIFORM变量定位; 之后可以为着色器关联变量定位和资源绑定点: uniformBlockBinding 将统一数据块索引与绑定点关联; uniform1i 将贴图定位与绑定点关联;


slot

slot: number

组内资源槽索引,绑定对象和着色器管线可能不会利用完资源组布局中分配的所有槽位; 根据资源槽索引,绑定对象和着色器管线可以快速锁定绑定信息;


texture_sampleType

Optional texture_sampleType: "float" | "depth" | "sint" | "uint"

贴图应使用的采样器类型(数值类型):sampler2DArray、sampler2DArrayShadow、isampler2DArray、usampler2DArray。


texture_viewDimension

Optional texture_viewDimension: "2d" | "3d" | "2d-array" | "cube"

贴图应使用的采样器类型(贴图维度):sampler2D、sampler2DArray、samplerCube、sampler3D。


visibility

visibility: number

组合标志集,标志UNIFORM变量分别在顶点着色器和片元着色器中的可见性;


xxx_bindingPoint

Optional xxx_bindingPoint: number

资源绑定点,资源组绑定时需要取得该绑定点: bindBufferBase 将统一缓存绑定到绑定点; bindBufferRange 将统一缓存绑定到绑定点; activeTexture 激活贴图绑定点,后续贴图操作都在该绑定点上进行; bindTexture 在活动贴图绑定点上绑定贴图; bindSampler 绑定采样器到贴图绑定点,注意贴图和采样器是绑定在一起的; 注: 理论上,绑定点应当在着色器管线布局中,根据所有资源组资源的定义顺序来分配; 但绑定组绑定不依赖当前着色器管线,绑定组创建也不能指定着色器管线布局,所以应当在资源组布局中指明资源绑定点; 基于引擎的设计,1个资源组只能包含1个UNIFORM BLOCK,我们将组号作为UNIFORM BLOCK的资源绑定点; 基于WebGL的设计,贴图和采样器是绑定在一起的,因此我们不能直接绑定资源组中定义的贴图和采样器; 在编译着色器分支时,材质贴图属性引用的贴图和采样器组合会产生不同的分支,此时我们为分支创建独立的纹理和采样器绑定方法; 绑定着色器管线时,为每个贴图属性激活贴图绑定点,并根据引用信息从当前绑定的资源组中找到贴图和采样器,然后一并绑定到贴图绑定点; 所以,着色器管线应后于资源组绑定; !!!由于资源组直到绑定才知道组号,所以此处绑定点没有存在的必要;