0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简单梳理渲染管线

电子设计 来源:电子设计 作者:电子设计 2021-01-20 22:27 次阅读

图形渲染管线

pIYBAGAIPViAM3D3AAMoZnP6WK4951.png

应用程序阶段

主要任务是在应用程序阶段的末端,将需要在屏幕上显示出来绘制的集合体(如点、线、矩阵等)输入到绘制管线的下一个阶段。

对于被渲染的每一帧,应用程序阶段将摄像机位置,光照和模型的图元输出到管线的下一个主要阶段——几何阶段。

几何阶段

可以划分为一下几个功能阶段:

模型视图变换 Model & View Transform:分为模型变换和视图变换,模型变换即旋转、平移、缩放,视图变换可以理解为将模型转到相机坐标系下。

顶点着色 Vertex Shading:确定模型上顶点处材质的光照效果。

投影 Projection:将视体变换到规范立方体(Canonical View Volume,CVV)中,模型位于归一化设备坐标系中(NDC)。分为正交投影和透视投影,Z 坐标将不会再保存于的得到的投影图片中,所以就是将模型从三维空间投射到了二维的空间中的过程。

裁剪 Clipping:对部分位于视体内部的图元进行裁剪操作。

屏幕映射 Screen Mapping:将之前得到的坐标映射到对应的屏幕坐标系上。

光栅化阶段

可以分为以下几个功能阶段:

三角形设定(Triangle Setup)阶段:计算三角形表面的差异和三角形表面的其他相关数据。

三角形遍历(Triangle Traversal)阶段:找到哪些采样点或像素在三角形中的过程。

像素着色(Pixel Shading)阶段:所有逐像素的着色计算都在像素着色阶段进行,使用插值得来的着色数据作为输入,输出结果为一种或多种将被传送到下一阶段的颜色信息。纹理贴图操作就是在这阶段进行的。

融合(Merging)阶段:合成当前储存于缓冲器中的由之前的像素着色阶段产生的片段颜色。此外,融合阶段还负责可见性问题(Z 缓冲相关)的处理。

GPU渲染管线

o4YBAGAIPZqAYMATAAOCkBelIZo448.png

o4YBAGAIPdqAFG23AAHddwZiHuE597.png

绿色的阶段是完全可编程

黄色的阶段可配置,但不可编程

蓝色的阶段完全固定

顶点着色器(The Vertex Shader)

是完全可编程的阶段,顶点着色器可以对每个顶点进行诸如变换和变形在内的很多操作,提供了修改/创建/忽略顶点相关属性的功能,这些顶点属性包括颜色、法线、纹理坐标和位置。顶点着色器的必须完成的任务是将顶点从模型空间转换到齐次裁剪空间。

几何着色器(The Geometry Shader)

位于顶点着色器之后,允许 GPU 高效地创建和销毁几何图元。几何着色器是可选的,完全可编程的阶段,主要对图元(点、线、三角形)的顶点进行操作。几何着色器接收顶点着色器的输出作为输入,通过高效的几何运算,将数据输出,数据随后经过几何阶段和光栅化阶段的其他处理后,会发送给片段着色器。

裁剪(Clipping)

属于可配置的功能阶段,在此阶段可选运行的裁剪方式,以及添加自定义的裁剪
面。

屏幕映射(Screen Mapping)、三角形设置(Triangle Setup)和三角形遍历(Triangle Traversal)阶段是固定功能阶段。

像素着色器(Pixel Shader)

像素着色器(Pixel Shader, Direct3D 中的叫法)常常又称为片断着色器,片元着色器(FragmentShader, OpenGL 中的叫法),是完全可编程的阶段,主要作用是进行像素的处理,让复杂的着色方程在每一个像素上执行。

合并阶段(The Merger Stage)

处于完全可编程和固定功能之间,尽管不能编程,但是高度可配置,可以进行一系列的操作。其除了进行合并操作,还分管颜色修改(Color Modifying), Z 缓冲(Zbuffer),混合(Blend),模板(Stencil)和相关缓存的处理。

来源:《Real-Time Rendering 3rd》提炼总结

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 渲染
    +关注

    关注

    0

    文章

    60

    浏览量

    10752
收藏 人收藏

    评论

    相关推荐

    OpenHarmony Sheet 表格渲染引擎

    基于 Canvas 实现的高性能 Excel 表格引擎组件 [OpenHarmonySheet]。 由于大部分前端项目渲染层是使用框架根据排版模型树结构逐层渲染的,整棵渲染树也是与排版模型树一一对应
    发表于 01-05 16:32

    揭秘:实时渲染、离线渲染、云渲染和混合渲染的区别

    渲染,就是将3D模型转换成2D图像,并最终呈现在屏幕上的过程。常见的渲染类型有以下几种:实时渲染离线渲染渲染混合
    的头像 发表于 12-26 08:27 242次阅读
    揭秘:实时<b class='flag-5'>渲染</b>、离线<b class='flag-5'>渲染</b>、云<b class='flag-5'>渲染</b>和混合<b class='flag-5'>渲染</b>的区别

    赛昉科技VisionFiv2上的GPU渲染测试,平均60帧每秒,非常丝滑

    gpu渲染
    xusiwei1236
    发布于 :2023年12月24日 21:23:11

    实时云渲染部署数字孪生显卡要求

    在数字孪生项目中,云渲染技术成为了一个重要的工具。它允许用户在不同的终端上使用,包括电脑、手机、平板、智能屏、电视和电视盒等。对用户而言,使用云渲染就像打开一个网页一样简单便捷, 不需要学习或安装
    的头像 发表于 12-05 17:01 297次阅读

    三极管线性电源频域与时域分析

    主要内容:利用运放环路稳定性判据对三极管线性电源进行频域与时域工作特性分析
    的头像 发表于 11-07 15:18 459次阅读
    三极<b class='flag-5'>管线</b>性电源频域与时域分析

    风靡一时的管线机,为何逐渐淡出市场?

    电子发烧友网报道(文/黄山明)管线机是管线式饮水机的简称,顾名思义,它是一个要连接净水器的装置,对于净水器流出的水,管线机会对其进行加热或者制冷。管线机具备LED显示灯,可以加热、保温
    的头像 发表于 09-17 01:58 3179次阅读
    风靡一时的<b class='flag-5'>管线</b>机,为何逐渐淡出市场?

    华为云渲染实践

    提到云渲染,大家可能会直接联想到云游戏,实际上二者并不等同。华为云致力于将渲染技术应用于各个行业,目前主要包括实时渲染和离线渲染两大分支,实时渲染
    的头像 发表于 08-24 16:46 630次阅读
    华为云<b class='flag-5'>渲染</b>实践

    HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制if/else条件渲染

    ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态,使用if、else和else if渲染对应状态下的UI内容。说明:从API version 9开始,该接口支持在ArkTS卡片中使用。一
    发表于 08-21 14:29

    螺线管线圈的用途是什么

    螺线管线圈是一种电子元器件,通常用于电感器和变压器。螺线管线圈可以是单层的或多层的,并且可以根据特定的电气参数进行设计。它们被广泛应用于电子设备和通信系统中,以满足各种应用的要求。
    的头像 发表于 08-21 13:53 559次阅读

    HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制ForEach循环渲染

    ForEach基于数组类型数据执行循环渲染。说明,从API version 9开始,该接口支持在ArkTS卡片中使用。 一、接口描述 ForEach( arr: any
    发表于 08-18 10:50

    HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制概述

    ArkUI通过自定义组件的build()函数和@builder装饰器中的声明式UI描述语句构建相应的UI。 在声明式描述语句中开发者除了使用系统组件外,还可以使用渲染控制语句来辅助UI的构建,这些
    发表于 08-09 09:54

    如何将Unity着色器移植到通用渲染管道

    Unity中的通用渲染管道(URP)可在从移动到计算机的一系列平台上优化图形。URP在高端设备上生成高质量的图形,并在低端设备上优化性能。URP的其他优点在“什么是通用渲染管道? 在本指南中,我们将
    发表于 08-02 13:39

    Unity中的局部立方体图渲染技术解读

    本指南介绍了用于在Unity版本5及更高版本中实现反射的本地立方体贴图渲染技术。反射在游戏中很重要,因为它们使对象看起来很逼真。与旧的渲染技术相比,立方体贴图提供了几个优势。 例如,立方体映射解决了
    发表于 08-02 10:14

    如何检测你的项目中是否触发离屏渲染问题

    在普通的情况下,GPU直接将渲染好的内容放入FrameBuffer中,但是在离屏渲染时不同,需要先额外创建离屏渲染缓存区OffscreenBuffer。
    发表于 07-05 11:42 410次阅读
    如何检测你的项目中是否触发离屏<b class='flag-5'>渲染</b>问题

    3D渲染——光栅化渲染原理解析

    渲染进行介绍,描述了简单场景下3D渲染过程,主要帮助读者了解基于光栅化的 3D 渲染原理及过程。本文为系列文章,并在下一篇系列文章中以 Intel Gen12 为例,讲述 GPU 一
    的头像 发表于 05-18 17:29 1516次阅读
    3D<b class='flag-5'>渲染</b>——光栅化<b class='flag-5'>渲染</b>原理解析