Skip to content

@simversus/yjvis


@simversus/yjvis / rendering / Renderer

Class: Renderer

Defined in: rendering/Renderer.ts:57

引擎主渲染器类 负责管理渲染流程、后端适配 (WebGL/WebGPU)、资源分配和场景绘制

Extends

  • BaseObject

Constructors

Constructor

new Renderer(options): Renderer

Defined in: rendering/Renderer.ts:272

构造函数

Parameters

options

Partial<{ antialias: boolean; container: HTMLElement; dpr: number; forceWebGL: boolean; rendererSetting: any; requestMaxBufferSize: boolean; samples: number; }> = {}

配置项

Returns

Renderer

Overrides

BaseObject.constructor

Properties

_clearColors?

optional _clearColors: Color4[]

Defined in: rendering/Renderer.ts:155

多渲染目标的清除颜色列表


_currentRenderBundle

_currentRenderBundle: any

Defined in: rendering/Renderer.ts:138

当前渲染任务包


_scenes

_scenes: CaxScene[] = []

Defined in: rendering/Renderer.ts:67

场景实例列表


_textures

_textures: Textures

Defined in: rendering/Renderer.ts:116

纹理管理器


autoClear

autoClear: boolean = true

Defined in: rendering/Renderer.ts:76

是否在渲染前自动清除画布


autoClearColor

autoClearColor: boolean = true

Defined in: rendering/Renderer.ts:78

是否自动清除颜色缓冲


autoClearDepth

autoClearDepth: boolean = true

Defined in: rendering/Renderer.ts:80

是否自动清除深度缓冲


autoClearStencil

autoClearStencil: boolean = true

Defined in: rendering/Renderer.ts:82

是否自动清除模板缓冲


classHierarchy

classHierarchy: ClassEnum[]

Defined in: core/baseObject.ts:19

继承链

Inherited from

BaseObject.classHierarchy


coordinateSystem

coordinateSystem: CoordinateSystem = CoordinateSystem.WebGL

Defined in: rendering/Renderer.ts:193


customRenderObjectFunction?

optional customRenderObjectFunction: Function

Defined in: rendering/Renderer.ts:59

自定义渲染对象的函数钩子


depth

depth: boolean = true

Defined in: rendering/Renderer.ts:70

是否开启深度测试


info

readonly info: Info

Defined in: rendering/Renderer.ts:98

渲染信息统计


label?

optional label: string

Defined in: core/baseObject.ts:27

自定义标识

Inherited from

BaseObject.label


onResize?

optional onResize: Function

Defined in: rendering/Renderer.ts:64

窗口大小变化时的回调函数 注意:已经默认调用重置窗口和摄像机视角函数


outputColorSpace

outputColorSpace: ColorSpace = ColorSpace.SRGB

Defined in: rendering/Renderer.ts:85

输出颜色空间 (默认为 sRGB)


samples

samples: number

Defined in: rendering/Renderer.ts:74

MSAA 采样数


stencil

stencil: boolean = false

Defined in: rendering/Renderer.ts:72

是否开启模板测试


toneMapping

toneMapping: ToneMapping = ToneMapping.No

Defined in: rendering/Renderer.ts:90

色调映射类型 (Tone Mapping)


toneMappingExposure

toneMappingExposure: number = 1.0

Defined in: rendering/Renderer.ts:92

色调映射曝光度


userData

userData: object = {}

Defined in: core/baseObject.ts:23

用户自定义数据

Inherited from

BaseObject.userData


uuid

uuid: string

Defined in: core/baseObject.ts:15

唯一标识符

Inherited from

BaseObject.uuid

Accessors

api

Get Signature

get api(): API

Defined in: rendering/Renderer.ts:196

当前使用的渲染 API (WebGL/WebGPU)

Returns

API


backend

Get Signature

get backend(): Backend

Defined in: rendering/Renderer.ts:201

获取底层渲染后端实例

Returns

Backend


canvas

Get Signature

get canvas(): HTMLCanvasElement

Defined in: rendering/Renderer.ts:206

获取关联的 HTMLCanvasElement

Returns

HTMLCanvasElement


currentColorSpace

Get Signature

get currentColorSpace(): any

Defined in: rendering/Renderer.ts:231

获取当前输出色彩空间 如果存在 renderTarget,则优先使用 renderTarget 的色彩空间

Returns

any


currentToneMapping

Get Signature

get currentToneMapping(): ToneMapping

Defined in: rendering/Renderer.ts:258

获取当前实际生效的色调映射类型 当输出到渲染目标时,始终返回 NoToneMapping

Returns

ToneMapping


domElement

Get Signature

get domElement(): HTMLCanvasElement

Defined in: rendering/Renderer.ts:211

获取 DOM 元素 (同 canvas)

Returns

HTMLCanvasElement


dpr

Get Signature

get dpr(): number

Defined in: rendering/Renderer.ts:243

获取设备的像素比率 (DPR)

Returns

number


forceWebGL

Get Signature

get forceWebGL(): boolean

Defined in: rendering/Renderer.ts:216

是否强制使用 WebGL 模式

Returns

boolean


mtime

Get Signature

get mtime(): number

Defined in: core/baseObject.ts:56

获取对象的最后修改时间戳

Returns

number

Inherited from

BaseObject.mtime


size

Get Signature

get size(): Number2

Defined in: rendering/Renderer.ts:250

获取视图尺寸 (单位:CSS 像素)

Returns

Number2


slot

Get Signature

get slot(): HTMLElement

Defined in: rendering/Renderer.ts:223

渲染器挂载的容器槽位

Returns

HTMLElement

Methods

_initWebGL()

_initWebGL(): void

Defined in: rendering/Renderer.ts:1452

初始化 WebGL 后端

Returns

void


_initWebGPU()

_initWebGPU(): void

Defined in: rendering/Renderer.ts:1459

初始化 WebGPU 后端

Returns

void


addEventListener()

addEventListener(type, cb): void

Defined in: core/baseObject.ts:105

添加事件监听器

Parameters

type

string

事件类型字符串

cb

Function

事件触发时的回调函数

Returns

void

Inherited from

BaseObject.addEventListener


changed()

changed(): void

Defined in: core/baseObject.ts:72

标记对象为已修改 更新修改时间戳并触发所有注册的变更回调

Returns

void

Inherited from

BaseObject.changed


compute()

compute(computeNodes): Promise<void>

Defined in: rendering/Renderer.ts:696

执行计算任务 (Compute Shader)

Parameters

computeNodes

计算节点或节点列表

ComputeNode | ComputeNode[]

Returns

Promise<void>


copyFramebufferToTexture()

copyFramebufferToTexture(framebufferTexture, rectangle): void

Defined in: rendering/Renderer.ts:1602

将当前帧缓冲区内容拷贝到指定的纹理中

Parameters

framebufferTexture

Texture

目标纹理

rectangle

拷贝区域 (Vec2 或 Vec4),默认为整个纹理尺寸

Vec4 | Vec2

Returns

void


copyTextureToBuffer()

copyTextureToBuffer(texture, x, y, width, height): Promise<TypedArray>

Defined in: rendering/Renderer.ts:658

Parameters

texture

Texture

x

number = 0

y

number = 0

width

number = texture.image.width

height

number = texture.image.height

Returns

Promise<TypedArray>


dispatchEvent()

dispatchEvent(event): void

Defined in: core/baseObject.ts:126

分发事件 触发所有注册了该事件类型的监听器

Parameters

event

事件对象,包含 type 和可选的 data

data?

any

type

string

Returns

void

Inherited from

BaseObject.dispatchEvent


dispose()

dispose(): void

Defined in: rendering/Renderer.ts:1657

销毁渲染器实例 释放所有 GPU 资源、监听器并清空内存

Returns

void

Overrides

BaseObject.dispose


getActiveCubeFace()

getActiveCubeFace(): number

Defined in: rendering/Renderer.ts:627

Returns

number


getArrayBufferAsync()

getArrayBufferAsync(attribute): Promise<ArrayBuffer>

Defined in: rendering/Renderer.ts:654

Parameters

attribute

BufferAttribute

Returns

Promise<ArrayBuffer>


getClearAlpha()

getClearAlpha(): number

Defined in: rendering/Renderer.ts:603

Returns

number


getClearColor()

getClearColor(target): Color4

Defined in: rendering/Renderer.ts:585

Parameters

target

Color4 = ...

Returns

Color4


getClearDepth()

getClearDepth(): number

Defined in: rendering/Renderer.ts:611

Returns

number


getClearStencil()

getClearStencil(): number

Defined in: rendering/Renderer.ts:619

Returns

number


getDrawingBufferSize()

getDrawingBufferSize(target): Vec2

Defined in: rendering/Renderer.ts:383

获取绘图缓冲区的物理像素尺寸

Parameters

target

Vec2 = ...

结果存储向量

Returns

Vec2

物理像素尺寸


getMainInteractor()

getMainInteractor(): Interactor

Defined in: rendering/Renderer.ts:335

获取渲染层交互器 用于处理鼠标/触摸事件,不涉及具体场景内的拾取

Returns

Interactor

交互器实例


getMRT()

getMRT(): MRTNode

Defined in: rendering/Renderer.ts:353

Returns

MRTNode


getPixelRatio()

getPixelRatio(): number

Defined in: rendering/Renderer.ts:374

获取当前像素比率

Returns

number


getRenderTarget()

getRenderTarget(): RenderTarget

Defined in: rendering/Renderer.ts:650

获取当前渲染目标

Returns

RenderTarget


getScissor()

getScissor(target): Vec4

Defined in: rendering/Renderer.ts:465

Parameters

target

Vec4

Returns

Vec4


getScissorTest()

getScissorTest(): boolean

Defined in: rendering/Renderer.ts:520

Returns

boolean


getSize()

getSize(target): Vec2

Defined in: rendering/Renderer.ts:411

获取当前逻辑窗口尺寸 (CSS 像素)

Parameters

target

Vec2 = ...

结果存储向量

Returns

Vec2


getViewport()

getViewport(target): Vec4

Defined in: rendering/Renderer.ts:533

Parameters

target

Vec4

Returns

Vec4


hasFeature()

hasFeature(name): boolean

Defined in: rendering/Renderer.ts:1590

检查当前后端是否支持特定功能

Parameters

name

string

功能名称

Returns

boolean

是否支持


is()

is(t): boolean

Defined in: core/baseObject.ts:65

检查对象是否属于指定的类类型

Parameters

t

ClassEnum

类类型枚举值

Returns

boolean

如果对象是该类型或继承自该类型,则返回 true

Inherited from

BaseObject.is


onChanged()

onChanged(cb): () => void

Defined in: core/baseObject.ts:90

注册对象变更回调 当对象发生改变(调用 changed 方法)时触发

Parameters

cb

Function

回调函数

Returns

取消注册该回调的函数

(): void

Returns

void

Inherited from

BaseObject.onChanged


registerFrameCallback()

registerFrameCallback(cb): () => FrameCallBack[]

Defined in: rendering/Renderer.ts:348

注册帧更新回调函数 会在每一帧渲染循环中调用

Parameters

cb

FrameCallBack

回调函数

Returns

取消注册的函数

(): FrameCallBack[]

Returns

FrameCallBack[]


removeEventListener()

removeEventListener(type, cb): void

Defined in: core/baseObject.ts:116

移除事件监听器

Parameters

type

string

事件类型字符串

cb

Function

要移除的回调函数

Returns

void

Inherited from

BaseObject.removeEventListener


removeScene()

removeScene(s): void

Defined in: rendering/Renderer.ts:1683

从渲染器中移除指定场景

Parameters

s

CaxScene

要移除的场景实例

Returns

void


render()

render(scene, camera, useFrameBufferTarget): Promise<RenderContext>

Defined in: rendering/Renderer.ts:677

启动场景渲染流程 (同步/异步) 如果渲染器尚未初始化完成,会先等待初始化

Parameters

scene

场景或单个 Mesh

Scene | Mesh

camera

Camera

相机

useFrameBufferTarget

boolean = false

是否使用中间帧缓冲 (用于后处理)

Returns

Promise<RenderContext>

渲染上下文信息


renderAsync()

renderAsync(scene, camera, useFrameBufferTarget): Promise<void>

Defined in: rendering/Renderer.ts:687

异步渲染场景并解析时间戳 (用于性能监测)

Parameters

scene

Scene | Mesh

camera

Camera

useFrameBufferTarget

boolean = false

Returns

Promise<void>


renderObject()

renderObject(object, scene, camera, geometry, material, group, lightsNode): void

Defined in: rendering/Renderer.ts:756

渲染单个几何对象

Parameters

object

Transform

变换节点

scene

Scene

场景

camera

Camera

相机

geometry

BufferGeometry

几何体

material

NodeMaterial

材质

group

any

渲染分组

lightsNode

LightsNode

灯光节点

Returns

void


setClearAlpha()

setClearAlpha(alpha): void

Defined in: rendering/Renderer.ts:607

Parameters

alpha

number

Returns

void


setClearColor()

setClearColor(color, alpha): void

Defined in: rendering/Renderer.ts:594

设置清除颜色 (Clear Color)

Parameters

color

Color

颜色值

alpha

number = 1

透明度 (0-1),默认为 1

Returns

void


setClearColors()

setClearColors(colors?): void

Defined in: rendering/Renderer.ts:599

Parameters

colors?

Color4[]

Returns

void


setClearDepth()

setClearDepth(depth): void

Defined in: rendering/Renderer.ts:615

Parameters

depth

number

Returns

void


setClearStencil()

setClearStencil(stencil): void

Defined in: rendering/Renderer.ts:623

Parameters

stencil

number

Returns

void


setDrawingBufferSize()

setDrawingBufferSize(width, height, pixelRatio): void

Defined in: rendering/Renderer.ts:394

设置绘图缓冲区尺寸。 输入的 width/height 为 CSS 像素,canvas.width/height 会按 DPR 转成物理像素。

Parameters

width

number

宽度 (CSS 像素)

height

number

高度 (CSS 像素)

pixelRatio

number

像素比率

Returns

void


setMRT()

setMRT(mrt): Renderer

Defined in: rendering/Renderer.ts:357

Parameters

mrt

MRTNode

Returns

Renderer


setOpaqueSort()

setOpaqueSort(method): void

Defined in: rendering/Renderer.ts:453

设置不透明物体的自定义排序方法

Parameters

method

Function

排序函数

Returns

void


setPixelRatio()

setPixelRatio(value): void

Defined in: rendering/Renderer.ts:366

设置像素比率

Parameters

value

number = 1

DPR 值,默认为 1

Returns

void


setRenderTarget()

setRenderTarget(renderTarget, activeCubeFace, activeMipmapLevel): void

Defined in: rendering/Renderer.ts:637

设置渲染目标 (RenderTarget)

Parameters

renderTarget

RenderTarget

目标纹理,传 null 则渲染到屏幕

activeCubeFace

number = 0

立方体纹理的激活面

activeMipmapLevel

number = 0

激活的 Mipmap 层级

Returns

void


setScissorCSSPx()

setScissorCSSPx(x, y?, width?, height?): void

Defined in: rendering/Renderer.ts:509

Parameters

x

number | Vec4

y?

number

width?

number

height?

number

Returns

void

Deprecated

使用 setScissorRectCSSPx,保留此别名以兼容旧调用。


setScissorDevicePx()

setScissorDevicePx(x, y?, width?, height?): void

Defined in: rendering/Renderer.ts:516

Parameters

x

number | Vec4

y?

number

width?

number

height?

number

Returns

void

Deprecated

使用 setScissorRect,保留此别名以兼容旧调用。


setScissorRect()

setScissorRect(x, y?, width?, height?): void

Defined in: rendering/Renderer.ts:478

设置裁剪测试区域 (Scissor Rect)。 输入单位为物理像素,对齐底层 WebGL/WebGPU framebuffer 语义。

Parameters

x

number | Vec4

y?

number

width?

number

height?

number

Returns

void


setScissorRectCSSPx()

setScissorRectCSSPx(x, y?, width?, height?): void

Defined in: rendering/Renderer.ts:493

设置裁剪测试区域 (Scissor Rect),输入单位为 CSS 像素。 内部会按当前 DPR 转成物理像素。

Parameters

x

number | Vec4

y?

number

width?

number

height?

number

Returns

void


setScissorTest()

setScissorTest(boolean): void

Defined in: rendering/Renderer.ts:528

开启或关闭裁剪测试 (Scissor Test)

Parameters

boolean

boolean

是否开启

Returns

void


setSize()

setSize(width, height, updateStyle): void

Defined in: rendering/Renderer.ts:422

设置窗口尺寸 (CSS 像素)。 同步更新 canvas.style 尺寸以及按 DPR 计算后的 drawing buffer 尺寸。

Parameters

width

number

宽度 (CSS 像素)

height

number

高度 (CSS 像素)

updateStyle

boolean = true

是否更新 DOM 样式属性

Returns

void


setTransparentSort()

setTransparentSort(method): void

Defined in: rendering/Renderer.ts:461

设置透明物体的自定义排序方法

Parameters

method

Function

排序函数

Returns

void


setViewport()

setViewport(x, y?, width?, height?, minDepth?, maxDepth?): void

Defined in: rendering/Renderer.ts:541

设置视口区域 (Viewport)。 输入单位为物理像素,对齐底层 WebGL/WebGPU framebuffer 语义。

Parameters

x

number | Vec4

y?

number

width?

number

height?

number

minDepth?

number = 0

maxDepth?

number = 1

Returns

void


setViewportCSSPx()

setViewportCSSPx(x, y?, width?, height?, minDepth?, maxDepth?): void

Defined in: rendering/Renderer.ts:563

设置视口区域 (Viewport),输入单位为 CSS 像素。 内部会按当前 DPR 转成物理像素。

Parameters

x

number | Vec4

y?

number

width?

number

height?

number

minDepth?

number = 0

maxDepth?

number = 1

Returns

void


waitReady()

waitReady(): Promise<void>

Defined in: rendering/Renderer.ts:326

等待渲染器完成初始化

Returns

Promise<void>

Promise