Re: [程式] frament shader问题

楼主: riveranb (River)   2016-07-18 21:56:15
※ 引述《Q2N2222 (Q2N2222)》之铭言:
: 请问
: 假设以一个三角形来说
: vertex shader 是三角形的三个vertex座标做些变换后再输出
: frament shader 是计算三角形中所有farment的color
: 是这样的解读有错?
: 我看书上frament shader 会从vertex shader中
: 传入经过模型矩阵变换过的vertex去计算光照
: 但这样不就只有用那个顶点的座标去计算?
: 三角形上其他像素的座标不就没用到?
: 那frament shader又是怎么取得每个frament的座标的?
因为在推文我实在是回的乱七八糟
所以在这里回一篇好了
网络上Google 大神回应很多,随手贴一篇
http://goo.gl/sd2A9w
以下是我依记忆写的,不是上面连结的中译版本
psuedo code:
====
input:
三角形(三顶点),形成三个边(E1, E2, E3)
每个顶点有 pos,normal,uv,color,...(or anything)
所以每个边上的每个像素都可以内插出自有的 pos,normal,uv,color
====
algorithm:
找出此三角形所覆蓋到之像素区域 (bounding box)
对此区域中每个横列之一整排像素 (scanline) 做以下工作:
- 判断目前像素是否属于三角型内部,如果是外部变略过
- 找出此 scanline 有交集的两个边
- 由这两个边找出起始和终点像素,内插出它们的pos,normal,...
- 对这个scanline 中交集的区断每个像素去内插计算
- 得到每个像素自己的 pos,normal,color,uv...
(此阶段便是由vertex shader将需要的资讯传给fragment shader)
- 该有的资讯拿到了,做任何你想做的事(输出颜色结果值)
====
其实好像还是写的很乱
总之参考看看,有问题再问囉
作者: Alimen (狂人)   2016-07-18 22:22:00
推 但可否帮改标题...我一直看成fart men放屁人orz
作者: Q2N2222 (Q2N2222)   2016-07-20 10:45:00
谢谢你 了解了 还有原来我标题打错了

Links booklink

Contact Us: admin [ a t ] ucptt.com