Re: [程式] frament shader問題

看板GameDesign作者 (River)時間7年前 (2016/07/18 21:56), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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) - 該有的資訊拿到了,做任何你想做的事(輸出顏色結果值) ==== 其實好像還是寫的很亂 總之參考看看,有問題再問囉 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.227.41.135 ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1468850178.A.01C.html

07/18 22:22, , 1F
推 但可否幫改標題...我一直看成fart men放屁人orz
07/18 22:22, 1F

07/20 10:45, , 2F
謝謝你 了解了 還有原來我標題打錯了
07/20 10:45, 2F
文章代碼(AID): #1NZE020S (GameDesign)
討論串 (同標題文章)
文章代碼(AID): #1NZE020S (GameDesign)