Unity(5.3) 渲染流程简述
2018-04-05 22:30
375 查看
裁剪 Camera.StandaloneCull
利用裁剪结果进入渲染流程 Camera.Rander
设置相机为当前相机
更新深度图 UpdateDepthTextures
初始化Render,设置RT,投影矩阵(SetProjectionMatrix)和视口(SetViewport)等
开始渲染所有几何体 DoRender
进入DoRenderLoop
PrepareFrame,设置世界转换矩阵,渲染模式(正交/透视),相机坐标,viewport
遍历所有可视节点,进行排序过程 利用世界坐标预估深度EvaluateObjectDepth
一次遍历记得点的所有材质(GetMaterial) 获取材质上Shader
确定Shader渲染队列在Opaque还是AfterOpaque
将Shader数据添加到响应的渲染队列(kPartOpaque/kPartAfterOpaque)
渲染Opaque物体 执行PrePassRender 遍历所有节点,进行排序(根据RenderQueue设置,lightmap,材质,距离等)
执行BasePass,生成MainRT(RenderBasePass)
渲染深度图DepthRT,法线DepthNormalsRT,ShadowMap
执行FinalPass(RenderFinalPass)
如果需要合并depth+normals(CombineDepthNormalsTexture)
执行ForwardShaderRender 判断是否接受阴影,获取渲染设置,LightManager等
对所有的Node执行渲染获取ShaderLab
找到所有影响无物体的光源Light
生成主光源阴影(MainLightShadow)
如果需要,生成其他光源阴影AdditionalShadow
获取Shander中的每个pass,进行排序
执行每个pass(具体过程未完)
有几种情况会break batch
如果有ForwadAddPass 是ShadowCaster 如果有PrePass更新深度图UpdateCameraDepthTextures
渲染天空盒 RenderSkybox
执行RenderImageFilters
渲染AfterOpaque物体 执行ForwardShaderRender
更新深度图UpdateCameraDepthTextures
利用裁剪结果进入渲染流程 Camera.Rander
设置相机为当前相机
更新深度图 UpdateDepthTextures
初始化Render,设置RT,投影矩阵(SetProjectionMatrix)和视口(SetViewport)等
开始渲染所有几何体 DoRender
进入DoRenderLoop
PrepareFrame,设置世界转换矩阵,渲染模式(正交/透视),相机坐标,viewport
遍历所有可视节点,进行排序过程 利用世界坐标预估深度EvaluateObjectDepth
一次遍历记得点的所有材质(GetMaterial) 获取材质上Shader
确定Shader渲染队列在Opaque还是AfterOpaque
将Shader数据添加到响应的渲染队列(kPartOpaque/kPartAfterOpaque)
渲染Opaque物体 执行PrePassRender 遍历所有节点,进行排序(根据RenderQueue设置,lightmap,材质,距离等)
执行BasePass,生成MainRT(RenderBasePass)
渲染深度图DepthRT,法线DepthNormalsRT,ShadowMap
执行FinalPass(RenderFinalPass)
如果需要合并depth+normals(CombineDepthNormalsTexture)
执行ForwardShaderRender 判断是否接受阴影,获取渲染设置,LightManager等
对所有的Node执行渲染获取ShaderLab
找到所有影响无物体的光源Light
生成主光源阴影(MainLightShadow)
如果需要,生成其他光源阴影AdditionalShadow
获取Shander中的每个pass,进行排序
执行每个pass(具体过程未完)
有几种情况会break batch
如果有ForwadAddPass 是ShadowCaster 如果有PrePass更新深度图UpdateCameraDepthTextures
渲染天空盒 RenderSkybox
执行RenderImageFilters
渲染AfterOpaque物体 执行ForwardShaderRender
更新深度图UpdateCameraDepthTextures
相关文章推荐
- Unity中Vive Controller手柄模型渲染流程和模型替换
- 学习UnityShader入门精要笔记1——渲染流程概述
- unity 渲染流程
- Ogre 渲染流程 RenderProcess
- 光照渲染[Unity]
- D3D渲染流程--转载
- unity中使用protobuffer作为网络通讯封包协议的实现和流程
- Unity_FPS游戏_Boss模块流程_01
- RenderMan与CG生产流程简述
- 用unity surface shader 重新渲染dota2 模型
- 线上机器被干掉 简述 处理流程(淡定是第一位的)。
- 简析url到整个网页加载完毕显示在屏幕上的流程/页面渲染过程
- DirectUI界面渲染流程
- 简述3D引擎的渲染优化
- Web项目Linux部署流程简述
- Unity5.3官方VR教程重磅登场-系列5 VR中的运动
- iOS 简述消息推送流程
- 翻译 基于物理渲染的美术资源设计流程
- unity渲染队列render quaue
- Oge中Mesh的渲染流程详述