码迷,mamicode.com
首页 > 编程语言 > 详细

Unity Geometry Shader实现

时间:2017-09-20 23:27:03      阅读:388      评论:0      收藏:0      [点我收藏+]

标签:转移   通过   board   官方   没有   完全   研究   编写   boa   

unity官方文档关于geometry shader的内容等同于没有,这也是因为unity的开发者基本面向的是移动平台开发,所以这种SM4.0的特性基本都不会被开发者考虑。但是本着与时俱进的精神(虽然现在已经不早了)还是研究一下以备不时之需。

在开始unity geometry shader之前,通过DX10的龙书,简单的了解了一下geometry shader的原理。然后看了一个GS的billboard例子,觉得大同小异。

首先要知道,GS和VS以及FS的区别。

在dx9的渲染管线中,可编程的shader只有顶点着色器和片段着色器两种,在我们进行shader编写的时候,可以知道顶点着色器的输出就是片段着色器的输入。但是在dx10的渲染管线开始,增加了一个几何着色器。几何着色器在渲染管线中位于顶点着色器和片段着色器之间,准确的是紧挨着顶点着色器,所以在某些方面,几何着色器的操作和顶点着色器有相似性,一些原来在顶点着色器中的计算完全可以转移到几何着色器中进行,但并不建议那么做。

其次,几何着色器是可选的,和顶点片段着色器不同。我们在shader编写的时候必须要有两个shader,顶点着色器用于坐标变换,片段着色器返回颜色。但是几何着色器呢?它的输入顶点着色器的输出,输出不是片段着色器的输入。输入是图元,输出也是图元。

但是有人会疑惑,在之前的vs和fs编写时,顶点着色器的输出即片段着色器的输入是一个顶点信息的数组啊。

图元是渲染对象在顶点着色器之后,光栅化之前的一种状态。简单的来说,就是点或者线段或者三角形。

经过这些简单的了解,很多人就大概能猜到几何着色器可以用来做什么了,比如曲面细分,比如lowpoly。上面说到的billboard也可以,不过billboard可以在脚本和顶点shader中同样可以实现,暂时还没有比较过三者之间的效率以及适用范围。

 

Unity Geometry Shader实现

标签:转移   通过   board   官方   没有   完全   研究   编写   boa   

原文地址:http://www.cnblogs.com/jaffhan/p/7565178.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!