我有一個提供紋理重復的著色器。但是在urp中是行不通的。我如何讓它適用于 urp?
更準確地說,著色器可以作業,但材質會變成粉紅色。我做了選項渲染>生成著色器包括。如果你能幫我怎么做,我會很高興。
我的重復著色器:
Shader "Custom/RepeatShader" {
Properties{
_Color("Main Color", Color) = (1,1,1,1)
_MainTex("Base (RGB)", 2D) = "white" {}
_Scale("Texture Scale", Float) = 1.0
}
SubShader{
Tags{ "RenderType" = "Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
fixed4 _Color;
float _Scale;
struct Input {
float3 worldNormal;
float3 worldPos;
};
void surf(Input IN, inout SurfaceOutput o) {
float2 UV;
fixed4 c;
if (abs(IN.worldNormal.x) > 0.5) {
UV = IN.worldPos.yz; // side
c = tex2D(_MainTex, UV* _Scale); // use WALLSIDE texture
}
else if (abs(IN.worldNormal.z) > 0.5) {
UV = IN.worldPos.xy; // front
c = tex2D(_MainTex, UV* _Scale); // use WALL texture
}
else {
UV = IN.worldPos.xz; // top
c = tex2D(_MainTex, UV* _Scale); // use FLR texture
}
o.Albedo = c.rgb * _Color;
}
ENDCG
}
Fallback "Legacy Shaders/VertexLit"
}
uj5u.com熱心網友回復:
我不知道你使用的是哪個版本的 Unity 和 URP,但我是這樣做的:
首先,用滑鼠右鍵單擊并選擇Create
> Shader Graph
> URP
> Lit Shader Graph
(如果您的著色器不應對光做出反應,則選擇 Unlit)。
在您的著色器中,創建一個名為 Main Tex 的 Texture2D 屬性、一個名為 Scale 的浮點屬性和一個名為 Color 的顏色屬性。
這是您的著色器圖結果應該如下所示:
這應該完全復制您在著色器中的內容。有一些可能的改進,例如使用Custom Function
節點提取您需要的內容而不使用所有這些節點,但這應該可以幫助您開始。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/536468.html