LightPipeline

.Renderer.WebGL.Pipelines. LightPipeline

光管道是多管道的扩展,并使用自定义着色器 设计用于处理场景中2D灯光的前向漫射渲染. 着色器与灯光游戏对象协同工作,并可选择纹理法线贴图, 以提供环境照明效果. 如果你想提供你自己的着色器,你可以在源代码中使用声明, 并且它将在运行时自动替换为已配置的灯的总数. 灯光的最大数量可以在渲染配置 `maxLights` 属性中设置,默认为10. 在Phaser v3.50之前,该管道被称为 `ForwardDiffuseLightPipeline` . 它使用的片段着色器可以在 `shaders/src/Light.frag` 中找到. 它使用的顶点着色器可以在 `shaders/src/Multi.vert` 中找到. 此管道的默认着色器属性是: `inPosition` (vec2,偏移量0) `zntexcoord` (vec 2,偏移量8) `inTexId` (浮点,偏移量16) `inTintEffect` (浮点,偏移20) `innt` (vec 4,偏移量24,规格化) 此管道的默认着色器制服来自多管道,加上: `umainsimpler` (sample r2d) `unomsampler` (sampler 2d) `uCamera` (vec4) `uResolution` (vec2) `uambientligoro` (vec 3) `uinversrotationmatrix` (mat 3) `uLights` (轻型结构)

Constructor

new LightPipeline(config)

Since:
  • 3.50.0
Parameters:
Name Type Description
config Phaser.Types.Renderer.WebGL.WebGLPipelineConfig 此管道的配置选项.

Extends

Members

active :boolean

Since:
  • 3.10.0
Inherited From:
指示当前管道是否处于活动状态. 切换此属性以启用或禁用管道呈现任何内容.
Type:
  • boolean

bytes :Uint8Array

Since:
  • 3.0.0
Inherited From:
Uint8视图到 `vertexData` ArrayBuffer.用于上传顶点缓冲资源到GPU.
Type:
  • Uint8Array

config :Phaser.Types.Renderer.WebGL.WebGLPipelineConfig

Since:
  • 3.50.0
Inherited From:
用于创建此管道的配置对象. 将此对象视为 `read only`,因为在创建后更改它不会 以任何方式影响这条管道.但是,它在内部用于克隆 和开机后设置.
Type:

currentRenderTarget :Phaser.Renderer.WebGL.RenderTarget

Since:
  • 3.50.0
Inherited From:
对 `WebGlPipeline.RenderTargets` 数组中当前绑定的渲染目标实例的引用.
Type:

currentShader :Phaser.Renderer.WebGL.WebGLShader

Since:
  • 3.50.0
Inherited From:
对 `WebGLPipeline.shaders` 数组中当前绑定的WebGLShader实例的引用. 对于许多管道,这是唯一的着色器,所以这是一种快速引用它的方法 数组查找.
Type:

currentUnit :number

Since:
  • 3.50.0
Inherited From:
保存最近分配的纹理单元. 将该值视为只读.
Type:
  • number

defaultNormalMap :object

Since:
  • 3.50.0
存储默认法线贴图,该贴图是一个带有 `glTexture` 属性的对象,该属性 映射到在 `boot` 方法中创建的颜色#7f7fff的1x1纹理.
Type:
  • object

forceZero :boolean

Since:
  • 3.50.0
Inherited From:
有些管道需要强制使用纹理零(像光管道). 在这种情况下,应该设置此属性.
Type:
  • boolean

game :Phaser.Game

Since:
  • 3.0.0
Inherited From:
管道绑定到的相位器游戏实例.
Type:

gl :WebGLRenderingContext

Since:
  • 3.0.0
Inherited From:
此WebGL管道使用的WebGL上下文.
Type:
  • WebGLRenderingContext

glReset :boolean

Since:
  • 3.53.0
Inherited From:
自上次以来,总帐上下文是否已重置为移相器默认值 这条管道被封了?当管道管理器 通常在移交给第三方渲染器(如Spine)后,重置自身. 您应该将此属性视为只读.
Type:
  • boolean

(readonly) hasBooted :boolean

Since:
  • 3.50.0
Inherited From:
指示此管道是否已启动. 只有当游戏实例本身以及所有相关联的系统 完全准备好.
Type:
  • boolean

height :number

Since:
  • 3.0.0
Inherited From:
当前视口的高度.
Type:
  • number

(readonly) isPostFX :boolean

Since:
  • 3.50.0
Inherited From:
指示这是否是一个后外汇管道.
Type:
  • boolean

(readonly) lightsActive :boolean

Since:
  • 3.53.0
一个布尔值,在 `onRender` 期间自动设置,用于确定 场景灯光管理器是否激活.
Type:
  • boolean

(nullable) manager :Phaser.Renderer.WebGL.PipelineManager

Since:
  • 3.50.0
Inherited From:
对网络总帐管道管理器的引用. 这最初是未定义的,仅在添加此管道时设置 给经理.
Type:

name :string

Since:
  • 3.0.0
Inherited From:
管道的名称.用于游戏对象的识别和设置.
Type:
  • string

projectionHeight :number

Since:
  • 3.50.0
Inherited From:
投影矩阵的缓存高度.
Type:
  • number

projectionMatrix :Phaser.Math.Matrix4

Since:
  • 3.50.0
Inherited From:
投影矩阵,由着色器用作 `uProjectionMatrix` 均匀.
Type:

projectionWidth :number

Since:
  • 3.50.0
Inherited From:
投影矩阵的缓存宽度.
Type:
  • number

renderer :Phaser.Renderer.WebGL.WebGLRenderer

Since:
  • 3.0.0
Inherited From:
此管道绑定到的WebGL渲染器实例.
Type:

renderTargets :Array.<Phaser.Renderer.WebGL.RenderTarget>

Since:
  • 3.50.0
Inherited From:
属于此管道的渲染目标实例的数组.
Type:

shaders :Array.<Phaser.Renderer.WebGL.WebGLShader>

Since:
  • 3.50.0
Inherited From:
属于此管道的所有WebGLShader实例的数组. 着色器管理自己的属性和制服,但共享相同的顶点数据缓冲区, 属于这条管道. 着色器是在调用 `setShadersFromConfig` 方法时设置的,这是自动发生的, 但也可以在游戏中的任何时候调用.有关详细信息,请参见方法文档.
Type:

topology :GLenum

Since:
  • 3.0.0
Inherited From:
管道将用于提交绘制调用的原始拓扑. 如果配置中没有设置,则默认为GL_TRIANGLES.
Type:
  • GLenum

(readonly) vertexBuffer :WebGLBuffer

Since:
  • 3.0.0
Inherited From:
保存顶点数据的网络缓冲区. 从 `vertexData` ArrayBuffer创建.如果在配置中设置了 `vertices` ,则 `STATIC_DRAW` 缓冲区 被创造出来.如果没有,则创建一个 `DYNAMIC_DRAW` 缓冲区.
Type:
  • WebGLBuffer

vertexCapacity :number

Since:
  • 3.0.0
Inherited From:
此管道批处理在刷新之前可以容纳的顶点总数. 这默认为 `renderbatchsize * 6` ,其中 `batchSize` 在渲染器游戏配置中定义.
Type:
  • number

vertexCount :number

Since:
  • 3.0.0
Inherited From:
Default Value:
  • 0
已添加到管道批次的当前顶点数.
Type:
  • number

(readonly) vertexData :ArrayBuffer

Since:
  • 3.0.0
Inherited From:
顶点的原始字节缓冲区. 通过配置对象 `vertices` 属性设置,或生成新的数组缓冲区 大小 `vertexCapacity * vertexSize` .
Type:
  • ArrayBuffer

vertexViewF32 :Float32Array

Since:
  • 3.0.0
Inherited From:
包含管道顶点的数组缓冲区的Float32视图.
Type:
  • Float32Array

vertexViewU32 :Uint32Array

Since:
  • 3.0.0
Inherited From:
包含管道顶点的数组缓冲区的Uint32视图.
Type:
  • Uint32Array

view :HTMLCanvasElement

Since:
  • 3.0.0
Inherited From:
此WebGL管道渲染到的画布.
Type:
  • HTMLCanvasElement

width :number

Since:
  • 3.0.0
Inherited From:
当前视口的宽度.
Type:
  • number

Methods

addListener(event, fn, contextopt) → {this}

Since:
  • 3.0.0
Inherited From:
为给定事件添加侦听器.
Parameters:
Name Type Attributes Default Description
event string | symbol 事件名称.
fn function 侦听器函数.
context * <optional>
this 用来调用侦听器的上下文.
Returns:
`this`.
Type
this

batchQuad(gameObject, x0, y0, x1, y1, x2, y2, x3, y3, u0, v0, u1, v1, tintTL, tintTR, tintBL, tintBR, tintEffect, textureopt, unitopt) → {boolean}

Since:
  • 3.50.0
Inherited From:
将顶点数据添加到批处理中,如果已满,则进行刷新. 假设有6个顶点,排列如下: ``` 0----3 |\ B| | \ | | \ | | A \| | \ 1----2 ``` 其中tx0/ty0 = 0,tx1/ty1 = 1,tx2/ty2 = 2,tx3/ty3 = 3
Parameters:
Name Type Attributes Default Description
gameObject Phaser.GameObjects.GameObject | null 游戏对象,如果有的话,画这个方块.
x0 number 左上角的x位置.
y0 number 左上角的y位置.
x1 number 左下角的x位置.
y1 number 左下角的y位置.
x2 number 右下角的x位置.
y2 number 右下角的y位置.
x3 number 右上角的x位置.
y3 number 右上角的y位置.
u0 number UV u0值.
v0 number UV v0值.
u1 number UV u1值.
v1 number UV v1值.
tintTL number 左上角的色调颜色值.
tintTR number 右上角的色调颜色值.
tintBL number 左下角的色调颜色值.
tintBR number 右下角的色调颜色值.
tintEffect number | boolean