CryEngine 渲染流程

  1. 渲染涉及的线程: MainThread、RenderThread、CullingThread和JobThread。 
    MainThread: 用于控制渲染流程 
    RenderThread: 用于渲染底层图形元素 
    CullingThread:用于计算裁剪 
    JobThread: 用于协同以上线程的通信
  2. 线程协同的序列图

  1. Cull Job,注册Culling任务:

2. DECLARE_JOB("CheckOcclusion", TOcclusionCheckJob, NAsyncCull::CCullThread::CheckOcclusion);

3. DECLARE_JOB("PrepareOcclusion", TOcclusionPrepareJob, NAsyncCull::CCullThread::PrepareOcclusion);

4. DECLARE_JOB("PrepareOcclusion_ReprojectZBuffer", TOcclusionPrepareReprojectJob, NAsyncCull::CCullThread::PrepareOcclusion_ReprojectZBuffer);

5. DECLARE_JOB("PrepareOcclusion_ReprojectZBufferLine", TOcclusionPrepareReprojectLineJob, NAsyncCull::CCullThread::PrepareOcclusion_ReprojectZBufferLine);

6. DECLARE_JOB("PrepareOcclusion_ReprojectZBufferLineAfterMerge", TOcclusionPrepareReprojectLineJob2, NAsyncCull::CCullThread::PrepareOcclusion_ReprojectZBufferLineAfterMerge);

7. DECLARE_JOB("PrepareOcclusion_RasterizeZBuffer", TOcclusionPrepareRasterizeJob, NAsyncCull::CCullThread::PrepareOcclusion_RasterizeZBuffer);

  1. 裁剪处理: 
    MainThread中调用: 
    C3DEngine::PrepareOcclusion 

    CObjManager::PrepareCullbufferAsync 

    CCullThread::PrepareCullbufferAsync –> TOcclusionPrepareJob job; // 从主线程创建任务,任务则将从JobThread线程执行,此后每个Job结束后,又创建新的Job向下推进: 
    | , 
    CCullThread::PrepareOcclusion –> TOcclusionPrepareReprojectJob job; 

    CCullThread::PrepareOcclusion_ReprojectZBuffer –> TOcclusionPrepareRasterizeJob job; 

    CCullThread::PrepareOcclusion_ReprojectZBufferLine –> RASTERIZER.ReprojectHWDepthBuffer;TOcclusionPrepareReprojectLineJob2 job; 

    CCullThread::PrepareOcclusion_ReprojectZBufferLineAfterMerge –> RASTERIZER.ReprojectHWDepthBufferAfterMerge TOcclusionPrepareRasterizeJob job; 

    CCullThread::PrepareOcclusion_RasterizeZBuffer –>TOcclusionCheckJob job; 

    CCullThread::CheckOcclusion

以上流程,大体思路是,用当前相机生成一个裁剪视锥和深度缓存,通过TestAABB,将模型的深度信息写入深度缓存(类似于实现zbuffer深度绘制算法)。 
除此,CryEngine还有其OCM处理流程(OCM Occlusion Mesh查询遮挡模型),通过加载预先生成的OCM模型,可以快速裁剪。

转载于:https://www.cnblogs.com/magrlemon/p/7296321.html

CryEngine 渲染流程相关推荐

  1. react16 渲染流程

    前言 react升级到16之后,架构发生了比较大的变化,现在不看,以后怕是看不懂了,react源码看起来也很麻烦,也有很多不理解的地方. 大体看了一下渲染过程. react16架构的变化 react ...

  2. 【逆向】UE4 渲染流程分析

    UE4作为当今商业引擎界的大佬,渲染和图形质量一直是首屈一指的水准,但是相对于unity来说UE4基本上是一套完整方案提供,不通过源码修改对渲染进行定制的可能性比较小,而且同时UE4这方面的文档很少, ...

  3. COCOS学习笔记--Cocos引擎渲染流程

    近期在研究Cocos引擎的渲染流程.在这里将其整个渲染流程进行一下梳理: 梳理之前我们要知道一些东西,就是我们的Cocos引擎是通过使用OpenGL的一些API来进行渲染绘制的,所以假设我们要彻底理解 ...

  4. cocos2d-x游戏引擎核心(3.x)----启动渲染流程

    (1) 首先,这里以win32平台下为例子.win32下游戏的启动都是从win32目录下main文件开始的,即是游戏的入口函数,如下: #include "main.h" #inc ...

  5. 【Android 应用开发】Paint 渲染 之 BitmapShader 位图渲染 ( 渲染流程 | CLAMP 拉伸最后像素 | REPEAT 重复绘制图片 | MIRROR 绘制反向图片 )

    文章目录 1. 位图渲染 BitmapShader 简介 ( 1 ) 位图渲染综述 ( ① 三种方式 : Shader.TileMode.CLAMP | Shader.TileMode.REPEAT ...

  6. html将页面分成三块_导航渲染流程你真的知道从输入URL到页面展示发生了什么吗?(内附思维导图)...

    导航渲染流程 通过这篇文章当你被问到从URL输入到页面展示都发生了什么的时候,基本都能对答如流,甚至可以一直深入的说,说到面试官闭麦哈哈哈~ 以下是本文的思维导图,直接拿图「点个赞」再走吧 ~ 求求了 ...

  7. 5渲染判断if_React 16 渲染流程

    学过微机的同学都应该很熟悉「中断」这个概念: CPU 正常运行程序时,内部事件或外设提出中断请求: CPU 予以响应,同时保护好 CPU 执行主程序的现场,转入调用中断服务程序: 调用完毕后恢复现场. ...

  8. OpenGL ES之基本简介和渲染流程

    简介 OpenGL ES (OpenGL for Embedded Systems) 是以⼿持和嵌入式为目标的高级3D图形应用程序编程接口(API). OpenGL ES是目前智能手机中占据统治地位的 ...

  9. [转贴]Cocos2d-x3.2与OpenGL渲染总结(一)Cocos2d-x3.2的渲染流程

    看了opengles有一段时间了,算是了解了一下下.然后,就在基本要决定还是回归cocos2dx 3.2的,看了这篇好文章,欣喜转之~ 推荐看原帖: Cocos2d-x3.2与OpenGL渲染总结(一 ...

  10. 【干货】十分钟读懂浏览器渲染流程

    在之前写过的一篇<"天龙八步"细说浏览器输入URL后发生了什么>一文中,和大家分享了从在浏览器中输入网址URL到最终页面展示的整个过程.部分读者向我反馈对于最后的浏览器 ...

最新文章

  1. python类型-python语言中的数据类型有哪些
  2. python interactive window_如果PySide应用程序是从IPython interactive cons运行的,上下文菜单就会消失...
  3. C语言 函数声明和定义 - C语言零基础入门教程
  4. 【教育】斯坦福开学演讲:为什么很多人顶级学校毕业,却终身平庸?
  5. Celo计划推出一种与欧元挂钩的新稳定币
  6. 8.0系统机器激活XPOSED框架失败The Xposed framework is not installed
  7. java 长整型long_C语言和java 长整型为何打印不同?
  8. JAVA课程设计(小游戏贪吃蛇)完整源码附素材(一)
  9. 线性调频信号与脉冲压缩
  10. 封装多帧dicm图像
  11. 服务器网站5m带宽可以同时在线多少人?
  12. 企业盈利能力五大指标之:净利润现金流比率
  13. 芒种节气的含义,都藏在这些芒种节气设计海报里啦!
  14. 一文带你了解ARM的发展历程
  15. 360加速插件谷歌字体服务停止运行
  16. maven本地仓库的更新
  17. el-table合并单元格
  18. linux如何拿到文件的返回值,linux 下read函数返回值分析
  19. 富友集团由盈转亏:收购事项完成后未变更,旗下富友支付多次被罚
  20. 抗渗等级p6是什么意思_关于混凝土抗渗等级p6 p8采用混凝土抗渗剂的用法

热门文章

  1. 【致远FAQ】致远OA宕机之内存溢出
  2. [BZOJ5109]大吉大利,晚上吃鸡!
  3. 苹果手机有没有计算机记录,苹果手机中的safari浏览记录怎么恢复?苹果恢复大师教你...
  4. 网站建设之帝国cms搭建小技巧详细搭建配置教程
  5. 方法教程 | Python爬虫:爬取美女图片,看到了意想不到的场景美女图片
  6. 网吧服务器多长时间维护,网吧服务器常用设置维护工具
  7. excel打开密码忘记了_行李箱密码忘记了怎么办?教你3招轻松打开
  8. android 视频通话框架,Android基于腾讯云实时音视频仿微信视频通话最小化悬浮
  9. win7html.exe,win7系统exe程序打开方式还原怎么弄 win7系统还原exe程序打开方式办法介绍...
  10. 解决调用接口时的OPTIONS请求