we
    Preparing search index...

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    _lastNumberOfLights: number = 0

    *上一帧光源数量,动态增减光源,uniform的光源的GPUBuffer大小会变化,这个值如果与this.lights.length相同,不更新;不同,更新GPUBuffer

    _lastNumberOfShadow: number = 0

    上一帧shadowmap数量,动态增减光源,uniform的shadowmap的GPUBuffer大小会变化, 这个值如果与this.shadowArrayOfDepthMapAndMVP.length相同,不更新;不同,怎更新GPUBuffer

    ambientLight: AmbientLight = ...

    环境光
    1、在PBR中,尽可能小 2、在非PBR,设置在0.01比较合适。原有设定为0.21

    device: GPUDevice
    lightsUniformGPUBuffer: GPUBuffer

    @group(0) @binding(1) var U_lights : ST_Lights;

    所有光源的uniform ,直接生成默认最大光源数的Buffer 对应system.wgsl中的struct ST_Lights scene 的MVP使用中的lights

    list: BaseLight[] = []
    reNewLightsNumberOfShadow: boolean = false

    todo:20250105,目前写成固定的

    是否动态增加了光源

    scene: Scene
    shadowArrayOfDepthMapAndMVP: light_shadowMapMatrix[] = []

    光源的shadow map 和 MVP的存储结构 在addLight()中动态增加,按照count(1或6)增加

    shadowIndexID: number = 0

    shadowmap数量的计数器:indexID,从0开始 shadowmap的数量不一定和lights的数量对应(一个light可能有多个shadowmap,以及光源是否产生shadowmap) MVP和depth texture使用,根据增加的光源的shadow而自增,从0开始( GPUOrigin3DDict 的 depthOrArrayLayers)

    shadowMapTexture: GPUTexture

    @group(0) @binding(3) var U_shadowMap_depth_texture : texture_depth_2d_array;

    shadowmap的depth texture texture_depth_2d_array 动态的:根据光源的数量、种类和是否产生shadowmap,动态增加shadowmap的数量

    ShadowMapUniformGPUBuffer: GPUBuffer

    @group(0) @binding(2) var U_shadowMapMatrix : array<ST_shadowMapMatrix,$lightNumberShadowNumber>;

    render scene 用的每个 light 的shadow MVP.是uniform的GPUBuffer 对应system.wgsl中的结构 ST_shadowMapMatrix;

    Methods

    • 创建光源的shadow map的uniform buffer(GPUBuffer),渲染shadow map 使用

      Parameters

      • id: string

        光源的ID

      • Optionalm4: Float32Array<ArrayBufferLike>

        光源的MVP

      Returns GPUBuffer

      光源的shadow map的uniform buffer

    • shadow map render RPD 创建shadowMap的RPD,每个MVP对应一个RPD(因为depth textrue 是array)

      Parameters

      • shadowIndexID: number
      • selfIndex: number

        光源的selfIndex,当前位置后的便宜了

      Returns GPURenderPassDescriptor

    • 生成shadow map 的所有光源的MVP,是MVP*lightNumber的大小

      1、在scene render 中system uniform 使用:@group(0)@binding(2) var U_shadowMapMatrix

      Returns GPUBuffer

      GPUBuffer

    • 生成shadow map 的 texture_depth_2d_array

      1、用途两种:

       A、render 每个light的 shadow map 的RPD使用     
      
       B、scene render的system uniform 使用,@group(0)@binding(3) var U_shadowMap_depth_texture
      

      2、目前是使用固定光源数量*6的最大array(point light 需要6个depth texture)

      3、后期更改为动态

      Parameters

      • layerNumber: number

      Returns GPUTexture

      GPUTexture

    • 获取光源的ID和matrixIndex,根据mergeID

      Parameters

      • mergeUUID: string

        光源的mergeID:由光源的ID,和matrixIndex组成

      Returns { id: number; matrixIndex: number }

      光源的ID和matrixIndex

    • 目前的版本没有采用,shadow map render 根据pipeline auto 模式生产BindGroup

      Parameters

      • mergeID: string
      • pipeline: GPURenderPipeline

      Returns GPUBindGroup

      GPUBindGroup

    • 待检查:20250918,这个应该是从light中取的,目前来看是一个从this.shadowArrayOfDepthMapAndMVP[] 获取当前光源的index的MVP

      Parameters

      • id: number
      • matrix_index: number

      Returns Float32Array

    • 获取当前光源的MVP

      Parameters

      • mergeID: string

        光源的合并ID

      Returns Float32Array

      光源的MVP

    • 获取光源的uniform buffer(GPUBuffer) system camera 使用:@group(0) @binding(1) var U_lights : ST_Lights;

      Returns GPUBuffer

      光源的uniform buffer

    • 获取光源的shadow map 的MVP

      Parameters

      • id: number

        string, light id

      • matrixIndex: number

        number, 光源的矩阵index,0-5,点光源有6个shadow map

      Returns false | GPUBuffer

      GPUBuffer | false

    • 获取shadowMap的depth texture view,根据ID和matrixIndex

      Parameters

      • id: number

        光源的ID

      • matrixIndex: number

        光源的selfIndex

      Returns GPUTextureView

      光源的shadow map的depth texture view

    • 获取shadowMap的depth texture view,根据mergeID

      Parameters

      • mergeID: string

        光源的mergeID:由光源的ID,和matrixIndex组成

      Returns GPUTextureView

      光源的shadow map的depth texture view

    • 获取shadowMap的RPD,

      Parameters

      • id: number

        光源的ID

      • matrixIndex: number

        光源的selfIndex

      Returns false | GPURenderPassDescriptor

      GPURenderPassDescriptor | false

    • 获取光源的shadow map的uniform buffer(GPUBuffer) system camera 使用:@group(0) @binding(2) var U_shadowMapMatrix : array<ST_shadowMapMatrix,$lightNumberShadowNumber>;

      Returns GPUBuffer

      光源的shadow map的uniform buffer

    • 获取shadowmap的结构数组 BaseEntity 调用此函数

      Returns light_shadowMapMatrix[]

      light_shadowMapMatrix[]

    • 获取shadowMap的RPD,

      Parameters

      • mergeID: string

      Returns false | GPURenderPassDescriptor

      GPURenderPassDescriptor | false

    • 更新所有光源在主渲染过程中的system uniform 的GPUBuffe 在WGSL是一个struct ,参见“system.wgsl”中的 ST_Lights结构。

      Returns Promise<GPUBuffer>

      光源的GPUBuffer,大小=16 + 16 +(this.list.length ||1) * lightStructSize,

    • 1、更新所有光源的shadow map的uniform :@group(0)@binding(2) var U_shadowMapMatrix 2、同步更新每个光源生成shadow map用的MVP

      Returns GPUBuffer

    • 写入MVP到GPUBuffer

      Parameters

      • m4: Float32Array

        光源的MVP

      • oneGPUBuffer: GPUBuffer

        光源的shadow map的uniform buffer

      Returns void