Skip to content

@simversus/yjvis


@simversus/yjvis / rendering / Renderer

Class: Renderer

Defined in: rendering/Renderer.ts:47

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

Extends

  • BaseObject

Constructors

Constructor

new Renderer(options): Renderer

Defined in: rendering/Renderer.ts:258

构造函数

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:141

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


_currentRenderBundle

_currentRenderBundle: any

Defined in: rendering/Renderer.ts:126

当前渲染任务包


_scenes

_scenes: CaxScene[] = []

Defined in: rendering/Renderer.ts:55

场景实例列表


_textures

_textures: Textures

Defined in: rendering/Renderer.ts:104

纹理管理器


autoClear

autoClear: boolean = true

Defined in: rendering/Renderer.ts:64

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


autoClearColor

autoClearColor: boolean = true

Defined in: rendering/Renderer.ts:66

是否自动清除颜色缓冲


autoClearDepth

autoClearDepth: boolean = true

Defined in: rendering/Renderer.ts:68

是否自动清除深度缓冲


autoClearStencil

autoClearStencil: boolean = true

Defined in: rendering/Renderer.ts:70

是否自动清除模板缓冲


classHierarchy

classHierarchy: ClassEnum[]

Defined in: core/baseObject.ts:19

继承链

Inherited from

BaseObject.classHierarchy


coordinateSystem

coordinateSystem: CoordinateSystem = CoordinateSystem.WebGL

Defined in: rendering/Renderer.ts:179


customRenderObjectFunction?

optional customRenderObjectFunction: Function

Defined in: rendering/Renderer.ts:49

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


depth

depth: boolean = true

Defined in: rendering/Renderer.ts:58

是否开启深度测试


info

readonly info: Info

Defined in: rendering/Renderer.ts:86

渲染信息统计


label?

optional label: string

Defined in: core/baseObject.ts:27

自定义标识

Inherited from

BaseObject.label


onResize?

optional onResize: Function

Defined in: rendering/Renderer.ts:52

窗口大小变化时的回调函数


outputColorSpace

outputColorSpace: ColorSpace = ColorSpace.SRGB

Defined in: rendering/Renderer.ts:73

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


samples

samples: number

Defined in: rendering/Renderer.ts:62

MSAA 采样数


stencil

stencil: boolean = false

Defined in: rendering/Renderer.ts:60

是否开启模板测试


toneMapping

toneMapping: ToneMapping = ToneMapping.No

Defined in: rendering/Renderer.ts:78

色调映射类型 (Tone Mapping)


toneMappingExposure

toneMappingExposure: number = 1.0

Defined in: rendering/Renderer.ts:80

色调映射曝光度


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:182

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

Returns

API


backend

Get Signature

get backend(): Backend

Defined in: rendering/Renderer.ts:187

获取底层渲染后端实例

Returns

Backend


canvas

Get Signature

get canvas(): HTMLCanvasElement

Defined in: rendering/Renderer.ts:192

获取关联的 HTMLCanvasElement

Returns

HTMLCanvasElement


currentColorSpace

Get Signature

get currentColorSpace(): any

Defined in: rendering/Renderer.ts:217

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

Returns

any


currentToneMapping

Get Signature

get currentToneMapping(): ToneMapping

Defined in: rendering/Renderer.ts:244

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

Returns

ToneMapping


domElement

Get Signature

get domElement(): HTMLCanvasElement

Defined in: rendering/Renderer.ts:197

获取 DOM 元素 (同 canvas)

Returns

HTMLCanvasElement


dpr

Get Signature

get dpr(): number

Defined in: rendering/Renderer.ts:229

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

Returns

number


forceWebGL

Get Signature

get forceWebGL(): boolean

Defined in: rendering/Renderer.ts:202

是否强制使用 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:236

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

Returns

Number2


slot

Get Signature

get slot(): HTMLElement

Defined in: rendering/Renderer.ts:209

渲染器挂载的容器槽位

Returns

HTMLElement

Methods

_initWebGL()

_initWebGL(): void

Defined in: rendering/Renderer.ts:1053

初始化 WebGL 后端

Returns

void


_initWebGPU()

_initWebGPU(): void

Defined in: rendering/Renderer.ts:1060

初始化 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:634

执行计算任务 (Compute Shader)

Parameters

computeNodes

计算节点或节点列表

ComputeNode | ComputeNode[]

Returns

Promise<void>


copyFramebufferToTexture()

copyFramebufferToTexture(framebufferTexture, rectangle): void

Defined in: rendering/Renderer.ts:1203

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

Parameters

framebufferTexture

Texture

目标纹理

rectangle

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

Vec4 | Vec2

Returns

void


copyTextureToBuffer()

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

Defined in: rendering/Renderer.ts:596

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:1258

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

Returns

void

Overrides

BaseObject.dispose


getActiveCubeFace()

getActiveCubeFace(): number

Defined in: rendering/Renderer.ts:565

Returns

number


getArrayBufferAsync()

getArrayBufferAsync(attribute): Promise<ArrayBuffer>

Defined in: rendering/Renderer.ts:592

Parameters

attribute

BufferAttribute

Returns

Promise<ArrayBuffer>


getClearAlpha()

getClearAlpha(): number

Defined in: rendering/Renderer.ts:541

Returns

number


getClearColor()

getClearColor(target): Color4

Defined in: rendering/Renderer.ts:523

Parameters

target

Color4 = ...

Returns

Color4


getClearDepth()

getClearDepth(): number

Defined in: rendering/Renderer.ts:549

Returns

number


getClearStencil()

getClearStencil(): number

Defined in: rendering/Renderer.ts:557

Returns

number


getDrawingBufferSize()

getDrawingBufferSize(target): Vec2

Defined in: rendering/Renderer.ts:370

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

Parameters

target

Vec2 = ...

结果存储向量

Returns

Vec2

物理像素尺寸


getMainInteractor()

getMainInteractor(): Interactor

Defined in: rendering/Renderer.ts:322

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

Returns

Interactor

交互器实例


getMRT()

getMRT(): MRTNode

Defined in: rendering/Renderer.ts:340

Returns

MRTNode


getPixelRatio()

getPixelRatio(): number

Defined in: rendering/Renderer.ts:361

获取当前像素比率

Returns

number


getRenderTarget()

getRenderTarget(): RenderTarget

Defined in: rendering/Renderer.ts:588

获取当前渲染目标

Returns

RenderTarget


getScissor()

getScissor(target): Vec4

Defined in: rendering/Renderer.ts:450

Parameters

target

Vec4

Returns

Vec4


getScissorTest()

getScissorTest(): boolean

Defined in: rendering/Renderer.ts:478

Returns

boolean


getSize()

getSize(target): Vec2

Defined in: rendering/Renderer.ts:397

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

Parameters

target

Vec2 = ...

结果存储向量

Returns

Vec2


getViewport()

getViewport(target): Vec4

Defined in: rendering/Renderer.ts:491

Parameters

target

Vec4

Returns

Vec4


hasFeature()

hasFeature(name): boolean

Defined in: rendering/Renderer.ts:1191

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

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:335

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

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:1284

从渲染器中移除指定场景

Parameters

s

CaxScene

要移除的场景实例

Returns

void


render()

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

Defined in: rendering/Renderer.ts:615

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

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:625

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

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:694

渲染单个几何对象

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:545

Parameters

alpha

number

Returns

void


setClearColor()

setClearColor(color, alpha): void

Defined in: rendering/Renderer.ts:532

设置清除颜色 (Clear Color)

Parameters

color

Color

颜色值

alpha

number = 1

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

Returns

void


setClearColors()

setClearColors(colors?): void

Defined in: rendering/Renderer.ts:537

Parameters

colors?

Color4[]

Returns

void


setClearDepth()

setClearDepth(depth): void

Defined in: rendering/Renderer.ts:553

Parameters

depth

number

Returns

void


setClearStencil()

setClearStencil(stencil): void

Defined in: rendering/Renderer.ts:561

Parameters

stencil

number

Returns

void


setDrawingBufferSize()

setDrawingBufferSize(width, height, pixelRatio): void

Defined in: rendering/Renderer.ts:381

设置绘图缓冲区尺寸 会同步更新 Canvas 的逻辑尺寸和后端状态

Parameters

width

number

宽度 (CSS 像素)

height

number

高度 (CSS 像素)

pixelRatio

number

像素比率

Returns

void


setMRT()

setMRT(mrt): Renderer

Defined in: rendering/Renderer.ts:344

Parameters

mrt

MRTNode

Returns

Renderer


setOpaqueSort()

setOpaqueSort(method): void

Defined in: rendering/Renderer.ts:438

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

Parameters

method

Function

排序函数

Returns

void


setPixelRatio()

setPixelRatio(value): void

Defined in: rendering/Renderer.ts:353

设置像素比率

Parameters

value

number = 1

DPR 值,默认为 1

Returns

void


setRenderTarget()

setRenderTarget(renderTarget, activeCubeFace, activeMipmapLevel): void

Defined in: rendering/Renderer.ts:575

设置渲染目标 (RenderTarget)

Parameters

renderTarget

RenderTarget

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

activeCubeFace

number = 0

立方体纹理的激活面

activeMipmapLevel

number = 0

激活的 Mipmap 层级

Returns

void


setScissor()

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

Defined in: rendering/Renderer.ts:467

设置裁剪测试区域 (Scissor) 传入的是 CSS 像素值

Parameters

x

X 坐标或 Vec4 区域

number | Vec4

y?

number

Y 坐标

width?

number

宽度

height?

number

高度

Returns

void


setScissorTest()

setScissorTest(boolean): void

Defined in: rendering/Renderer.ts:486

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

Parameters

boolean

boolean

是否开启

Returns

void


setSize()

setSize(width, height, updateStyle): void

Defined in: rendering/Renderer.ts:408

设置窗口尺寸 (CSS 像素) 同步更新 Canvas 的宽度、高度以及后端状态

Parameters

width

number

宽度 (CSS 像素)

height

number

高度 (CSS 像素)

updateStyle

boolean = true

是否更新 DOM 样式属性

Returns

void


setTransparentSort()

setTransparentSort(method): void

Defined in: rendering/Renderer.ts:446

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

Parameters

method

Function

排序函数

Returns

void


setViewport()

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

Defined in: rendering/Renderer.ts:505

设置视口区域 (Viewport) 传入的是 CSS 像素值

Parameters

x

X 坐标或 Vec4 区域

number | Vec4

y?

number

Y 坐标

width?

number

宽度

height?

number

高度

minDepth?

number = 0

最小深度 (0-1)

maxDepth?

number = 1

最大深度 (0-1)

Returns

void


waitReady()

waitReady(): Promise<void>

Defined in: rendering/Renderer.ts:313

等待渲染器完成初始化

Returns

Promise<void>

Promise