유니티 셰이더 기초 - RGB/형변/변수

코드멍멍이(Joonieboy)·2022년 9월 3일
1
post-thumbnail

test.rgb

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

float3에 변수 넣어보기

위에서 한 것과 마찬가지로 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;
        }

공부한 책 : 유니티 쉐이더 스타트업

profile
#유니티개발자 #게임 #인플루언서 #ENFJ

0개의 댓글