《Real-Time Rendering 3rd》提炼总结 RTR3读书笔记

《Real-Time Rendering 3rd》提炼总结 -毛星云 https://zhuanlan.zhihu.com/p/342079652.5 几何着色器 The Geometry Shader几何着色器可以改变新传递进来的图元的拓扑结构,且几何着色器可以接收任何拓扑类型的图元,但是只能输出点、折线(line strip)和三角形条(triangle strips)。...
摘要由CSDN通过智能技术生成

《Real-Time Rendering 3rd》提炼总结 -毛星云   https://zhuanlan.zhihu.com/p/34207965

 

2.5 几何着色器 The Geometry Shader

几何着色器可以改变新传递进来的图元的拓扑结构,且几何着色器可以接收任何拓扑类型的图元,但是只能输出点、折线(line strip)和三角形条(triangle strips)。

• 几何着色器需要图元作为输入,在处理过程中他可以将这个图元整个丢弃或者输出一个或更多的图元(也就是说它可以产生比它得到的更多或更少的顶点)。这个能力被叫做几何增长(growinggeometry)。如上所述,几何着色器输出的形式只能是点,折线和三角形条。

• 当我们未添加几何着色器时,默认的行为是将输入的三角形直接输出。我们添加了几何着色器之后,可以在几何着色器中修改输出的图形,我们可以输出我们想要输出的任何图形。

一些几何着色器的应用。左图,使用几何着色器实现元球的等值面曲面细分(metaballisosurface tessellation)。中图,使用了几何着色器和流输出进行线段细分的分形(fractalsubdivision of line segments)。右图,使用顶点和几何着色器的流输出进行布料模拟。

3.2. 5.1 流输出 Stream Output

GPU 的管线的标准使用方式是发送数据到顶点着色器,然后对所得到的三角形进行光栅化处理,并在像素着色器中处理它们。 数据总是通过管线传递,无法访问中间结果。流输出的想法在 Shader Model4.0 中被引入。在顶点着色器(以及可选的几何着色器中)处理顶点之后,除了将数据发送到光栅化阶段之外,也可以输出到流,也就是一个有序数组中进行处理。事实上,可以完全关掉光栅化,然后管线纯粹作为非图形流处理器来使用。以这种方式处理的数据可以通过管线回传,从而允许迭代处理。如原书的第 10.7 节所述,这种操作特别适用于模拟流动的水或其他粒子特效。

4.. 4.2 三种着色处理方法

着色处理是计算光照并由此决定像素颜色的过程,存在 3 种常见的着色处理方法:平滑着色、高洛德着色与冯氏着色。

平滑着色(Flat shading):简单来讲,就是一个三角面用同一个颜色。如果一个三角面的代表顶点(也许是按在 index 中的第一个顶点),恰好被光照成了白色,那么整个面都会是白的。

高洛德着色(Gouraud shading):每顶点求值后的线性插值结果通常称为高洛德着色。在高洛德着色的实现中,顶点着色器传递世界空间的顶点法线和位置到 Shade( ) (首先确保法线矢量长度为 1),然后将结果写入内插值。像素着色器将获取内插值并将其直接写入输出。 高洛德着色可以为无光泽表面产生合理的结果,但是对于强高光反射的表面

冯氏着色(Phong shading):冯氏着色是对着色方程进行完全的像素求值。在冯氏着色实现中,顶点着色器将世界空间法线和位置写入内插值,此值通过像素着色器传递给 Shade( )函数。而将 Shade( )函数返回值写入到输出中。请注意,即使表面法线在顶点着色器中缩放为长度 1,插值也可以改变其长度,因此可能需要在像素着色器中再次执行此归一化操作。

注意冯氏着色可以说是三者中最接近真实的着色效果,当然开销也是最大的。因为高洛德着色是每个顶点(vertex)计算一次光照,冯氏着色是每个片元(fragment)或者说每像素计算一次光照,点的法向量是通过顶点的法向量插值得到的。所以说不会出现高洛德着色也许会遇到的失真问题

4.5 抗锯齿与常见抗锯齿类型总结

抗锯齿(英语:anti-aliasing,简称 AA),也译为边缘柔化、消除混叠、抗图像折叠有损,反走样等。它是一种消除显示器输出的画面中图物边缘出现凹凸锯齿的技术,那些凹凸的锯齿通常因为高分辨率的信号以低分辨率表示或无法准确运算出 3D 图形坐标定位时所导致的图形混叠(aliasing)而产生的,抗锯齿技术能有效地解决这些问题。下面将常见的几种抗锯齿类型进行总结介绍,也包括 RTR3 中没有讲到的,最近几年新提出的常见抗锯齿类型

4. 5.1 超级采样抗锯齿( SSAA

超级采样抗锯齿(Super-Sampling Anti-Aliasing,简称 SSAA)是比较早期的抗锯齿方法,比较消耗资源,但简单直接。这种抗锯齿方法先把图像映射到缓存并把它放大,再用超级采样把放大后的图像像素进行采样,一般选取 2 个或 4 个邻近像素,把这些采样混合起来后,生成的最终像素,令每个像素拥有邻近像素的特征,像素与像素之间的过渡色彩,就变得近似,令图形的边缘色彩过渡趋于平滑。再把最终像素还原回原来大小的图像,并保存到帧缓存也就是显存中,替代原图像存储起来,最后输出到显示器,显示出一帧画面。这样就等于把一幅模糊的大图,通过细腻化后再缩小成清晰的小图。如果每帧都进行抗锯齿处理,游戏

或视频中的所有画面都带有抗锯齿效果。 超级采样抗锯齿中使用的采样法一般有两种:

• OGSS,顺序栅格超级采样(Ordered Grid Super-Sampling,简称 OGSS),采样时选取 2 个邻近像素。

• RGSS,旋转栅格超级采样(Rotated Grid Super-Sampling,简称 RGSS),采样时选取 4 个邻近像素。

另外,作为概念上最简单的一种超采样方法,全场景抗锯齿(Full-Scene Antialiasing,FSAA)以较高的分辨率对场景进行绘制,然后对相邻的采样样本进行平均,从而生成一幅新的图像。

4. 5.2 多重采样抗锯齿( MSAA

多重采样抗锯齿(Multi Sampling Anti-Aliasing,简称 MSAA),是一种特殊的超级采样抗锯齿(SSAA)。MSAA 首先来自于 OpenGL。具体是 MSAA 只对

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值