iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >图形学之Unity渲染管线流程分析
  • 265
分享到

图形学之Unity渲染管线流程分析

2024-04-02 19:04:59 265人浏览 八月长安
摘要

下图是《Unity Shader 入门精要》一书中的渲染流程图; ApplicationStage阶段:准备场景信息(视景体,摄像机参数)、粗粒度剔除、定义每个模型的渲染命令(材质

下图是《Unity Shader 入门精要》一书中的渲染流程图;

ApplicationStage阶段:准备场景信息(视景体,摄像机参数)、粗粒度剔除、定义每个模型的渲染命令(材质,shader)——由开发者定义,不做讨论;

GemetryStage阶段:顶点着色器、曲面细分着色器、几何着色器、裁剪、屏幕映射;

RasterizerStage阶段:三角形设置遍历,片元着色器、逐片元操作;

每个阶段具体操作如下图(虚线框是可选阶段):

模型空间——矩阵变换——齐次裁剪空间——透视除法——NDC标准设备坐标——屏幕映射

齐次裁剪空间是视景体空间(台体);

CVV:标准视体-也就是NDC坐标系对应的空间;

透视除法:顶点坐标除以w分量,将当前z深度所在的截面缩放为(2,2,2)的截面坐标;所以w分量记录了z深度信息;

硬件做透视除法获得NDC归一化设备坐标——再经过屏幕映射获得屏幕坐标系下顶点坐标;

Unity使用OpenGL的NDC,z分量在[-1,1];

OpenGL和DirectX差异

NDC空间——OpenGL为[-1,1],DirectX为[0,1],深度z范围不同;

窗口坐标系——DirectX左上角原点,OpenGL左下角原点;

投影平面——DirectX投影平面就是视景体近截面,OpenGL有视平面;

左右手坐标系——DirectX左手,OpenGL右手,叉乘顺序;

问题:

为什么片元不叫像素?

片元是很多状态的集合,记录了该像素的屏幕坐标,深度信息,法线,UV等;

DrawCall为什么会影响性能?

DrawCall是CPU向GPU添加渲染命令的过程,过程会由CPU向GPU发送数据(模型信息),DrawCall的次数越多CPU消耗性能就越大,DrawCall次数过多会导致每一帧CPU来不及发送全部数据给GPU渲染;

GPU有一个命令缓存区(Command Buffer),CPU的渲染命令都会存储在这里,GPU从命令缓存区依次执行渲染命令;

两种渲染命令:渲染模型(CPU提交模型信息也就是DrawCall)和改变渲染状态(着色器纹理状态改变,更耗时);

一般情况都是GPU渲染完成等待CPU发渲染命令;

--结束END--

本文标题: 图形学之Unity渲染管线流程分析

本文链接: https://www.lsjlt.com/news/161633.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 图形学之Unity渲染管线流程分析
    下图是《Unity Shader 入门精要》一书中的渲染流程图; ApplicationStage阶段:准备场景信息(视景体,摄像机参数)、粗粒度剔除、定义每个模型的渲染命令(材质...
    99+
    2024-04-02
  • Unity渲染管线流程是怎样的
    本篇内容介绍了“Unity渲染管线流程是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!下图是《Unity Shader 入门精要》一书...
    99+
    2023-06-22
  • 3D图形渲染管线
    3D图形渲染管线什么是渲染(Rendering)渲染简单的理解可能可以是这样:就是将三维物体或三维场景的描述转化为一幅二维图像,生成的二维图像能很好的反应三维物体或三维场景(如图1):图1:Rendering什么是渲染管线渲染管线也称为渲染...
    99+
    2023-01-31
    管线 图形
  • 如何从React渲染流程分析Diff算法
    这篇文章主要介绍了如何从React渲染流程分析Diff算法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。React中最神奇的部分莫过于虚拟D...
    99+
    2024-04-02
  • 浏览器渲染流程分析:重新绘制和重排的影响
    重绘和回流后会发生什么?深入解析浏览器渲染流程,需要具体代码示例 在网页开发中,了解浏览器渲染流程是非常重要的。浏览器渲染流程包括了重绘(Repaint)和回流(Reflow)两个重要过程。本文将对这两个过程进行详细解析,并提供...
    99+
    2024-01-26
    浏览器渲染 回流 编程重绘
  • 微信小程序中视图层条件渲染的示例分析
    这篇文章给大家分享的是有关微信小程序中视图层条件渲染的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下使用wx:if进行视图层的条件渲染示例:wxml:使用vi...
    99+
    2024-04-02
  • 详细分析Fresco源码之图片加载流程
    目录一、概述二、DraweeView三、DraweeHierachy四、DraweeHolder五、DraweeController 的构造逻辑六、通过 DataSource 发起图...
    99+
    2024-04-02
  • 微信小程序列表渲染功能之列表下拉刷新及上拉加载的示例分析
    小编给大家分享一下微信小程序列表渲染功能之列表下拉刷新及上拉加载的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果图首...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作