Transparent Shader with alpha

在制作上一篇的 Toon shader 的時候,

發現一個不大不小的問題困擾了幾天,

在製作 Unlit shader + transparent 時發覺 Unity 提供的 Shadow 資訊一直未能正確地取得,

所以為何人家的 Shader 可以而我自己的不行呢?

答案原來在於 Render Queue, 因為沒有想到是這方面的影響所以一直搜尋不到答案.

Reference #1: https://forum.unity.com/threads/shadow-attenuation-problems-with-transparent-queue.138513/

按上面的講解, 是因為 Transparent (3000) 沒有把影子寫入到 depth buffer, 所以 shader 取不到影子的資料…

Reference #2: https://forum.unity.com/threads/difference-between-alphatest-and-transparent-renderqueue.458750/

Render Queue difference

 

而這邊把有人提到 AlphaTest, 其實並不是 Transparent (廢話…), 重點是它根本不是透明. 是實色來的.

AlphaTest is an opaque queue, like Geometry, Background, and any queue 0 through 2500. Opaque queues are rendered in front to back order.

簡單的說法就是 AlphaTest 它把背後的東西在自己的表面重畫一次.
正正因為這樣自己是沒有受光的 (因為還沒有算 shadow 那一個 pass)

 

 

,

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

*