渲染02-内置Uniform

参考:
CesiumJS 源码杂谈 - 从光到 Uniform

渲染02-内置Uniform

1 Unifrom 的接口

路径: pacaages/engin/Source/Renderer/AutomaticUniforms.js

AutomaticUniforms 实际上是 Cesium 暴露给着色使用的接口集合。

AutomaticUniforms
  ┖ AutomaticUniform(czm_projection/czm_viewport/czm_viewportOrthographic...)
// AutomaticUniform包含:
czm_projection
czm_viewport
czm_viewportOrthographic
...
AutomaticUniforms = {
  czm_projection: new AutomaticUniform({
    size: 1,
    datatype: WebGLConstants.FLOAT_MAT4,
    getValue: function (uniformState) {
      return uniformState.projection;
    },
  })
}

请添加图片描述

2 Unifrom 的更新

内置unifrom实际上是 UniformState 负责更新。

路径: pacaages/engin/Source/Renderer/UniformState.js

类的从属关系:

Scene
  ┣ FrameState(_frameState)
      ┖ context
  ┖ Context(_context)UniformState(_us)

UniformState 更新的函数调用关系:

// Scene.js
fn render()
  UniformState.update();
    this.updateCamera();
3 Unifrom 的使用

DrawCommand 的执行。

简化版调用过程:

// Scene.js
fn render()
  // 1) 更新Uniform值
  UniformState.update();
    // 更新相机相关参数
    UniformState.updateCamera(camera);

  // 2) 执行命令
  DrawCommand.execute()
    // 使用 Uniform
    Contex.draw();
UniformState 关键成员:

czm_xxx 文档

来源UniformStatecesium.js说明sizethree.js
camera.viewMatrixview3Dczm_view3D世界转眼睛视图矩阵4*4viewMatrix
camera.viewMatrixviewRotation3Dczm_viewRotation3D视图矩阵的旋转部分3*3none
camera.viewMatrixinverseView3Dczm_inverseView3D眼睛转换为世界4*4none
frustum.projectionMatrixprojectionczm_projection眼睛转剪裁投影矩阵4*4projectionMatrix
frustum.projectionMatrixinverseProjectionczm_inverseProjection剪裁转眼睛4*4none
view3D * _modelmodelView3Dczm_modelView3D模型视图矩阵4*4modelViewMatrix
todomodelViewRelativeToEyeczm_modelViewRelativeToEyetodo4*4none
_projection * view3DviewProjectionczm_viewProjection视图投影矩阵4*4none
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值