首页 > 其他分享 >Scene渲染命令集合(executeCommands)分析

Scene渲染命令集合(executeCommands)分析

时间:2023-11-28 12:45:58浏览次数:24  
标签:----------- const 渲染 Pass Scene us executeCommands ._ globeDepth

Scene渲染命令集合(executeCommands)分析

前提条件:

// 已经确定了渲染缓冲区: view.globeDepth.framebuffer
passState.framebuffer = view.globeDepth.framebuffer

1、简单流程,没有pick和后处理

// 一般性流程
executeCommands(scene, passState) {
  // 更新相机
  us.updateCamera(camera);

  // 更新视锥
  us.updateFrustum(frustum)

  // -------------------------- 一、渲染环境 -----------------
  us.updatePass(Pass.ENVIRONMENT);
  // sky, sun, moon...

  // ------------------------- 二、渲染视椎里的内容 ---------------------------
  // ----------- 0、准备 -------------------
  // 确定如何处理半透明表面。
  executeTranslucentCommands = scene._executeOITFunction;

  // 读环境状态
  const clearGlobeDepth = environmentState.clearGlobeDepth;
  const useDepthPlane = environmentState.useDepthPlane;
  const usePostProcessSelected = environmentState.usePostProcessSelected;

  // 读场景状态
  const clearClassificationStencil = scene._classificationStencilClearCommand;
  const clearDepth = scene._depthClearCommand;
  const clearStencil = scene._stencilClearCommand;

  // 清除深度缓冲区和模板缓冲区, 颜色缓冲区呢?
  clearDepth.execute(context, passState);
  clearStencil.execute(context, passState);

  // ----------- 1、绘制 GLOBE -------------------
  us.updatePass(Pass.GLOBE);

  // 执行深度拷贝
  // 读入 view.globeDepth._outputFramebuffer 的 getDepthStencilTexture()
  // 写入 view.globeDepth._copyDepthFramebuffer
  globeDepth.executeCopyDepth(context, passState);

  // ----------- 2、绘制 terrain -------------------
  us.updatePass(Pass.TERRAIN_CLASSIFICATION);

  // ----------- 3、绘制 3D Tiles-------------------
  us.updatePass(Pass.CESIUM_3D_TILE);

  // ----------- 4、绘制 体素-------------------
  us.updatePass(Pass.VOXELS);

  // ----------- 5、绘制 不透明元素-------------------
  us.updatePass(Pass.OPAQUE);

  // ----------- 6、绘制 透明元素-------------------
  us.updatePass(Pass.TRANSLUCENT);

  // 执行深度拷贝
  // 读入 globeDepth.depthStencilTexture
  // 写入 pickDepth._framebuffer,用于位置拾取
  const depthStencilTexture = globeDepth.depthStencilTexture;
  const pickDepth = scene._picking.getPickDepth(scene, index);
  pickDepth.update(context, depthStencilTexture);
  pickDepth.executeCopyDepth(context, passState);

  // 如果 picking || !usePostProcessSelected, 就结束了

  // todo...
}

标签:-----------,const,渲染,Pass,Scene,us,executeCommands,._,globeDepth
From: https://www.cnblogs.com/lianming/p/17861662.html

相关文章

  • Vue3中 使用v-for嵌套 获取其他数组中的值作为key值 渲染数据
    <tbody><trv-for="(row,idx)inrows":key="idx"><tdv-for="(item,key)intitle":key="key">{{row[key]}}</td></tr>......
  • multipleWindow3dScene代码解释
    title:深入分析:GitHubTrending项目"multipleWindow3dScene"banner_img:https://cdn.studyinglover.com/pic/2023/11/b57a22bd9cf8a1c0a954fd61e6c311f2.pngdate:2023-11-2719:18:00tags:-文字生成图片这是由chatGPT生成的文章,内容是关于GitHubTrending项目"multi......
  • 关于微信小程序中如何实现数据可视化-echarts动态渲染
    移动端设备中,难免会涉及到数据的可视化展示、数据统计等等,本篇主要讲解原生微信小程序中嵌入echarts并进行动态渲染,实现数据可视化功能。基础使用首先在GitHub上下载echarts包地址:https://github.com/ecomfe/echarts-for-weixin/tree/master下载项目解压压缩包,将ec-canvas文......
  • 【前端VUE】Vue3条件渲染指令(v-if、v-else、v-else-if、v-show、v-for)
    新建项目npmcreatevite@latest运行项目cd项目目录npminstallnpmrundev条件渲染指令1、v-ifv-if指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回真值时才被渲染。2、v-else可以使用v-else为v-if添加一个“else区块”。3、v-else-ifv-else......
  • 关键字 开发-03 渲染yaml文件中的变量
    前言:引用渲染变量的模板有2个,一个是字符串模板,另一个是Jinja2模板1.字符串模板1.1.1通过字符串格式化方法进行渲染需要渲染的变量:name="dack"age=23x='mynameis%s,myageis%d'%(name,age)print(x)y="mynameis{},myageis{}".format(name,age)......
  • 渲染边缘
    jsPlumbToolkit使用单独的SVG元素来渲染边缘,使用单独的SVG/HTML元素来渲染节点,这是与该领域其他库不同的方法。jsPlumb不使用单个SVG上下文元素,因为我们不认为jsPlumb仅限于严格的图表库。jsPlumb的渲染方法(允许您使用任何HTML或SVG来渲染节点)意味着它能够构建该领......
  • 【拓展】图的渲染工具-Mermaid
    【拓展】图的渲染工具-Mermaid目录【拓展】图的渲染工具-MermaidMermaid简介Mermaid能绘制哪些图绘图示例流程图Flowchart饼图Pie甘特图GanttMermaid语法学习相关资料流程图甘特图Mermaid简介Mermaid是一个基于JavaScript的图表和图表工具,可呈现受Markdown启发的文本定义......
  • 模板渲染成标签还是原封不动的字符串 标签(for,for ... empty,if,with,csrf_token)
    模板渲染成标签还是原封不动的字符串:#xss攻击:是什么,如何预防?django已经处理了xss攻击,它的处理原理是什么fromdjango.utils.safestringimportmark_safelink1='<ahref="https://www.baidu.com">点我<a>'link2=mark_safe(link1){link1|safe}  标签:1{%标签名%}......
  • 【论文阅读笔记】【OCR-End2End】 ESTextSpotter: Towards Better Scene Text Spottin
    ESTextSpotterICCV2023读论文思考的问题论文试图解决什么问题?场景文本端到端识别任务中,检测和识别两个任务的协同作用十分关键,然而以往的方法通常用一些十分隐式的方式来体现这种协同作用(sharedbackbone,sharedencoder,sharedquery…),不能完全释放这种两个任务相互......
  • Unity 卡通渲染之角色篇
    前言作为新博客的第一篇,就用卡渲作为开篇叭!毕竟是个二次元乐。本篇同步发表于http://chenglixue.top/index.php/unity/73/之前使用UE的后处理做过简单的卡渲,但因其灵活性很差,很多操作都需涉及到更改管线,且奈何本人在校用的笔记本,一次build就得好久,因此放弃对卡渲的深入。如今对......