we
    Preparing search index...

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    _doubleSided: boolean = false
    _dynamic: boolean = false

    是否动态材质 :video材质的External就需要动态材质

    _id: number

    节点ID node ID

    _isDestroy: boolean = false
    _manager: undefined | ECSManager<RootGPU>
    _mipmap: I_mipmap = ...

    mipmap设置

    _name: string

    节点名称 node name

    _readyForGPU: boolean

    节点是否以及GPU准备好 node is ready of GPU

    _state: E_lifeState = E_lifeState.unstart
    _transparentMode: {
        alphaOfTransparent: boolean;
        alphaParams: I_AlphaTransparentOfMaterial;
        mode: T_transparentMode;
    } = ...

    blending混合的状态interface

    1、如果是undefined,说明不混合 2、如果是object,说明混合

    Type Declaration

    • alphaOfTransparent: boolean

      透明材质是否有alpha透明的部分 ,是否有BLEND。 两种情况: 1、使用统一的透明度(opacity) 2、使用来自texture的透明度(alpha)

    • alphaParams: I_AlphaTransparentOfMaterial
    • mode: T_transparentMode
    bindGroup: {
        opacityDefer:
            | undefined
            | GPUBindGroup
            | { [uuid: string]: GPUBindGroup };
        opacityForward: undefined | GPUBindGroup | { [uuid: string]: GPUBindGroup };
        opacityMSAA: undefined | GPUBindGroup | { [uuid: string]: GPUBindGroup };
        opacityMSAAInfo:
            | undefined
            | GPUBindGroup
            | { [uuid: string]: GPUBindGroup };
        TT: undefined | GPUBindGroup | { [uuid: string]: GPUBindGroup };
    } = ...

    VS bind group 1、 key :string 采样E_materialTypeForBindGroup的值 2、不使用[key in E_materialTypeForBindGroup] 的原因: A、不是所有类型会有用到,防止不必要的创建 B、目前TTP、TTPF暂停中;20260419

    bindGroupLayout: { [key: string]: GPUBindGroupLayout } = {}

    VS bind group layout

    bindGroupNumber: number = 2

    材质的默认绑定组,默认是2

    channel: number = 0
    commands: commmandType[] = []

    材质的更新命令队列 1、有materialManager调用,每帧更新一次。 2、非必须,比如video材质的External就需要

    defaultSampler: GPUSampler

    默认的sampler

    defaultSamplerBindingType: GPUSamplerBindingType = "filtering"

    材质的sampler是否存在,不存在就创建一个。

    defaultTexture2D: Texture

    默认的2D纹理

    defaultTexture3D: CubeTexture

    默认的3D纹理

    device: GPUDevice
    entityWorldMatrix: Float32Array = ...

    实体世界矩阵,shader中使用,默认为单位矩阵

    hasEntityWorldMatrix: boolean = false

    是否使用实体世界矩阵 1、默认为false,不使用实体世界矩阵 2、如果需要使用实体世界矩阵,需要在使用setEntityWorldMatrix()设置实体世界矩阵

    lastUpdaeTime: number = 0
    mapList: { key: any; map?: string; type: string }[] = []
    needUpdateuserDefine: boolean = false

    是否用户自定义更新函数

    needUpdateuserDefineAtEnd: boolean = false

    是否用户自定义更新函数,在update()函数最后调用

    resourcesGPU: ResourceManagerOfGPU
    scene: Scene
    shtOfMaterialType: {
        opacityDefer: undefined | string;
        opacityForward: undefined | string;
        opacityMSAA: undefined | string;
        opacityMSAAInfo: undefined | string;
        TT: undefined | string;
    }

    材质的SHT模板,key:材质类型,value:SHT模板。

    sizeOfVolumeBuffer: number = 80
    textures: { [name: string]: BaseTexture }

    纹理收集器

    type: string

    节点类型 node type

    uniformPointer: I_pointerStruct

    材质的uniform Buffer 的指针,用于快速访问
    1、PBR、phone需要使用

    uniformPointerCommon: I_pointerStruct

    common的uniform Buffer 的指针,用于快速访问

    uniformPointerCommonSize: number = 256
    uniformPointerCommonView: {
        accept_light: Int32Array;
        accept_shadow: Int32Array;
        barycentric_coordinates: {
            opacity: Float32Array;
            thickness: Float32Array;
            triangle: Int32Array;
            wireframe: Int32Array;
        };
        clip: {
            activate: Int32Array;
            inverse_side: Int32Array;
            inverse_x: Int32Array;
            inverse_y: Int32Array;
            inverse_z: Int32Array;
            plane_x: Float32Array;
            plane_y: Float32Array;
            plane_z: Float32Array;
            plane1: Float32Array;
            sdf: {
                invert_model_matrix: Float32Array;
                kind: Uint32Array;
                parameter: Float32Array;
                round: Int32Array;
                round_radius: Float32Array;
            };
        };
        color: Float32Array;
        depth_bias: { depth_bias: Float32Array; slope_scale: Float32Array };
        shadow_bias: Float32Array;
        transparent: {
            alpha_transparent: {
                alpha_cut_off: Float32Array;
                blend_mode: Uint32Array;
                opacity: Float32Array;
            };
            transparent_mode: Int32Array;
        };
        uv: {
            activate: Int32Array;
            offset: Float32Array;
            rotate: Float32Array;
            scale: Float32Array;
            uv_index: Int32Array;
        };
    }
    uniformVolumeBuffer: ArrayBuffer = ...
    uniformVolumeBufferView: {
        absorb_scale: Float32Array;
        channel: Uint32Array;
        invert_entity_world_matrix: Float32Array;
        max_steps: Uint32Array;
    } = ...
    uniformVolumeGPUBuffer: GPUBuffer
    UUID: string

    节点UUID node UUID

    Accessors

    Methods

    • 初始化材质 一、两种初始化模式 1、程序化控制模式: A、初始化时可以不传递scene对象,只关注材质参数。 B、scene传递和与其相关的参数在entity的init中,通过调用_material.init() 来初始化。 2、加载场景模式(编辑器,加载): A、初始化时需要传递scene对象。 B、然后使用 await xxx.init(scene) 来初始化,有异步的操作。 二、通过判断this._state,来判断是否已经初始化完成。 三、异步操作说明 1、派生类的redadyForGPU()会有异步操作; 2、texture的加载,url等

      Parameters

      • scene: Scene

        场景对象

      Returns Promise<any>

    • 正常更新,从上到下

      Parameters

      • clock: Clock

        Clock 时钟

      • updateSelftFN: boolean = true

        是否调用自身的updateSelf(),默认=true 此参数可以方便子类重载时,决定调用的updateSelf()的时间顺序或是否调用updateSelft()

      • updateAtEndFN: boolean = true

      Returns boolean