surf 함수 안에 float4 test를 초기화 하고, o.Albedo에 넣어 변화를 줄 수 있어요!! o.Albedo가 float3 형식인데, float4인 test를 그냥 넣어서 사용할 수도 있어요. 하지만 바른 코딩은 float4를 float3로 형변을 해주어야 한다는 것!!
그래서 o.Albedo = test; 로 작성하지 말고, o.Albedo = test.rgb;로 작성을 해주어야 해요. 이 외에도 test.rgb를 test.rrg, test.rg 등 다양하게 사용할 수 있어요 ㅎㅎ
void surf (Input IN, inout SurfaceOutputStandard o)
{
float4 test = float4(1,0,0,1);
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
//float4를 float3 형식으로 바꾸는 습관을 들여야 한다. 그러기 위해서 test.rgb를 넣어주었다
//o.Albedo = 1 or 0.5f; 도 가능하고, o.Albedo = test.rrb or test.rb 등이 가능하다
o.Albedo = test.rgb;
o.Alpha = c.a;
}
ENDCG
위에서 한 것과 마찬가지로 float를 초기화하는데, float2와 float3도 초기화를 해주세요~ 그리고 다양한 방법으로 사용해 보는거예요. 예를들면, 위에서 했던 test.rgb처럼 사용해보는거죠!
밑에 코드에서 r, gg, bbb를 초기화를 했고, 위에서 한 것처럼 r.r, gg.rg, bbb.rb 등 다양한 방식을 사용한다면, 재밌는 결과 값을 얻을 수 있어요!!
void surf (Input IN, inout SurfaceOutputStandard o)
{
float r = 1;
float2 gg = float2(0.5, 0);
float3 bbb = float3(1, 0, 1);
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
//초기화한 r, gg, bbb를 사용해서 float3에 다양한 방법으로 사용이 가능하다
// o.Albedo = float3(1,gg);
// o.Albedo = float3(r.r,bbb.rg);
o.Albedo = float3(r.r,gg.g,bbb.b);
o.Alpha = c.a;
}
공부한 책 : 유니티 쉐이더 스타트업