天天看點

Unity Shader 學習筆記(一)關于“表面着色器”切換渲染管線Shader不可用的問題

Shader主流上分為兩類:

表面着色器(surface shader):更進階的封裝,減少人工工作量,能實作大部分效果,缺點是自定義程度不 高,相對局限;

片段着色器(fragment shader):可以讓你做更多的效果,但是此shader更難寫。你也可以用它做一些底層的工作,比如頂點光照(Vertex lighting,即在每個頂點存儲該點的光照資訊)。頂點光照對于移動裝置很有用。該shader對于一些需要多通道(multiple passes)的進階渲染效果也很有效。—引用文章:Unity3D Shader 新手教程(1/6)

将“片段着色器”Shader由通用渲染管線轉換至URP渲染管線

本文主要是由于在一開始建構Shader時沒有考慮到後期更改渲染管線的問題,是以才會出現後期轉換Shader。

在渲染管線從通用切換至URP時,基于原Shader建立的材質出現紫紅色報錯,使用Unity内部的轉換材質球無效,考慮從Shader入手。

解決辦法就是在第一個“Pass”下增加一行代碼:

Tags{“LightMode” = “UniversalForward”} //LWRP不可用此Tag

需要注意的問題是:

1.我的Unity版本為2020;

2.老版本能否相容并未測試;

3.其他未知錯誤…