我對3D開發比較陌生,目前使用ActionScript,Stage3D和AGAL進行學習。我正在嘗試創建一個帶有平坦陰影的簡單程序網格的場景。然而,我被困在我應該如何將表面法線傳遞給照明着色器。我真的很想爲每個三角形使用一個單一的曲面法線並做平整,甚至爲每個三角形着色。我知道用每個頂點的法線很容易達到更好的照明效果,但這是我追求的樣子。簡單的平面着色使用Stage3D/AGAL
由於着色器通常會處理每個頂點,而不是每個三角形,所以我可能只通過每個三角形的單個法線,而不是每個頂點一個?我的想法完全離開這裏嗎?如果任何人有一個簡單,平坦的陰影的工作示例,我將不勝感激。
陰影依賴於每個像素的法線,它本身取決於您使用的插值方法。我不知道你使用的技術,我只能給你一個提示。你想要的只是一個插值,它爲每個像素取三角形頂點的平均值。 – Yno
好的,有道理。我認爲現在對我來說這個問題更加清楚:鑑於片段着色器處理法線的方式,如果我想要有平坦的陰影(每個面的一種顏色,沒有漸變),我需要確保我的頂點沒有在三角形之間共享?就目前而言,我正在分享頂點。如果我複製頂點以便共享頂點,那麼我可以確定每個頂點上的每個三角形都具有相同的法線,從而消除了像素間發生的任何插值。 –
複製頂點是可行的,但使用適當的插值是一種可行的方法。 – Yno