메뉴 건너뛰기

조회 수 397 추천 수 0 댓글 1


예에에에전에 지금 만들고 있는 게임 초창기에

지형을 어떻게 만들어야 적절할까 싶어서 알게된 Splatmap

 

image.png

 

요로코롬 Splatmap이라는 텍스쳐에 RGB를 칠 해놓고

그 3가지 색상과 매칭할 원하는 텍스쳐를 끼워서 쉐이더로 쓰까쓰까를 하는 것이랜다.

 

게임 제작 지원 사업의 누군가로부터 메인 텍스쳐까지 총 4가지 텍스쳐를 섞을 수 있는 쉐이더를 받았고

쉐이더 프로그래밍은 잘 모르지만 대충 훑어보니 간단해 보여서

대마왕표 쉐이더 책을 보면서 7개를 쓸 수 있도록 새로 제작해보았다.

 

 

 

image.png

그래서 요런요런 느낌으로 쓰는 중

 

 

 

라이트 안 먹는 unlit인가 nolit 인가 뭔가 이것저것 다 채용하면서 아는 지식 선에서는 최적화를 했지만

지금 생각하니 고작 이따위 최적화, 게임 속 오브젝트 생성과 오브젝트풀링 on/off에 의한 CPU 부하에 비하면 아무것도 아니군 싶음.

 

 

나중에는 스플랫맵에 구멍 뚫어서 투명하게 보이게 한 다음, 뒤에 Parallax 뒷배경 보여주면 괜찮을 것 같아서 그렇게 개조도 했다.

 

 

그러다 어느날 우리도 유니티에서 새로 밀어주는 Lightweight Render Pipeline인지 Universial Render Pipeline인지로 바꿔볼까? 하고 전환해보던 중

당연하게도 직접 만든 쉐이더는 핫-핑크 색을 발하고 있었다.

 

포☆기

 

 

 

 

 

검색엔진 크롤링 허용도 안 해놔서 사이트 접속하는 사람도 별로 없지만

혹시나 만들기 귀찮은 누군가가

또는 정말 아무것도 할 줄 모르는 유니티 초보가 이 쉐이더가 필요할 수도 있으니 코드 첨부

 

Shader "MultiTextureShader7_JPR" {
    Properties{
            _MainTex("MainTexture (A)", 2D) = "white" {}
            _MainTexuvScale("uvScaleX (Main)", Vector) = (1.0, 1.0, 0, 0)

            _RedTex0("Texture0 (R)", 2D) = "black" {}

            _GreenTex0("Texture0 (G)", 2D) = "black" {}

            _BlueTex0("Texture0 (B)", 2D) = "black" {}

            _SplatMap0("Splatmap0", 2D) = "black" {}

            _RedTex1("Texture1 (R)", 2D) = "black" {}

            _GreenTex1("Texture1 (G)", 2D) = "black" {}

            _BlueTex1("Texture1 (B)", 2D) = "black" {}

            _SplatMap1("Splatmap1", 2D) = "black" {}
    }
        SubShader{
            Tags { "RenderType" = "Opaque" "Queue" = "Transparent" }

            CGPROGRAM
            #pragma surface surf Standard alpha:fade
        //#pragma target 3.0

        sampler2D _MainTex;
        sampler2D _RedTex0, _RedTex1;
        sampler2D _GreenTex0, _GreenTex1;
        sampler2D _BlueTex0, _BlueTex1;
        sampler2D _SplatMap0, _SplatMap1;

        float2 _MainTexuvScale;
        float2 _RedTex0_ST, _RedTex1_ST;
        float2 _GreenTex0_ST, _GreenTex1_ST;
        float2 _BlueTex0_ST, _BlueTex1_ST;

        struct Input {
            float2 uv_MainTex;
        };

        void surf(Input IN, inout SurfaceOutputStandard o) {
            // Albedo comes from a texture tinted by color
            fixed4 aa = tex2D(_MainTex, IN.uv_MainTex * _MainTexuvScale);
            fixed4 rr = tex2D(_RedTex0, IN.uv_MainTex * _RedTex0_ST);
            fixed4 gg = tex2D(_GreenTex0, IN.uv_MainTex * _GreenTex0_ST);
            fixed4 bb = tex2D(_BlueTex0, IN.uv_MainTex * _BlueTex0_ST);
            fixed4 ss = tex2D(_SplatMap0, IN.uv_MainTex);


            fixed4 rrr = tex2D(_RedTex1, IN.uv_MainTex * _RedTex1_ST);
            fixed4 ggg = tex2D(_GreenTex1, IN.uv_MainTex * _GreenTex1_ST);
            fixed4 bbb = tex2D(_BlueTex1, IN.uv_MainTex * _BlueTex1_ST);
            fixed4 sss = tex2D(_SplatMap1, IN.uv_MainTex);

            o.Emission = lerp(aa.rgb, rr.rgb, ss.r);
            o.Emission = lerp(o.Emission, gg.rgb, ss.g);
            o.Emission = lerp(o.Emission, bb.rgb, ss.b);

            o.Emission = lerp(o.Emission, rrr.rgb, sss.r);
            o.Emission = lerp(o.Emission, ggg.rgb, sss.g);
            o.Emission = lerp(o.Emission, bbb.rgb, sss.b);

            o.Alpha = (ss.a);
        }

        //fixed4 LightingNoLighting(SurfaceOutput s, fixed3 lightDir, fixed atten) {
        //    return fixed4(0,0,0,0);
        //}
        ENDCG
    }
        FallBack "Diffuse"
}


엮인글

  • SeiRyu 2020.06.25 10:56

    오오 쉐이더도 직쩝짜신다니
    ​​​​​​​

사진 및 파일 첨부

여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.

파일 용량 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
53 게임 콜라이더 달린 총알 최적화하기 11 file 조루나 2020.06.11 489
» 게임 텍스쳐 쓰까쓰까 쉐이더 (SplatMap) - UV 스케일링 가능하게 업데이트 예에에에전에 지금 만들고 있는 게임 초창기에 지형을 어떻게 만들어야 적절할까 싶어서 알게된 Splatmap 요로코롬 Splatmap이라는 텍스쳐에 RGB를 칠 해놓고 그 ... 1 file 조루나 2020.06.18 397
51 게임 아! Texture의 Mesh Type 너무너무 무섭다. 1 file 조루나 2020.07.07 276
50 게임 멀티텍스쳐 쉐이더가 너무 무거워서 최적화를 위해 Bake file 조루나 2020.07.11 279
49 게임 남의 쉐이더가 역시 좋구만 file 조루나 2020.07.17 622
48 음악 직접 만든 신데마스 매쉬업 리믹스 3곡을 올려보겠습니다 2 file deric99 2020.07.31 193
47 게임 씬에 몬스터 박기 편하라고 미리보기 만들기 1 file 조루나 2020.08.12 327
46 게임 뭐! 지도에 캐릭터 위치를 보여달라고! 1 file 조루나 2020.08.20 340
45 게임 2D 게임이라도 팝콘이 튀기고 싶어 file 조루나 2020.09.09 256
44 게임 수동 밉맵(mipmap) 3 file 조루나 2020.09.11 323
43 게임 버프버프 2 file 조루나 2020.09.22 235
42 게임 엔터 더 건전 따라서 UI에 현재 무기 그림이 나오게 해달라기에. 1 file 조루나 2020.10.16 307
41 게임 총알 방패막 + 회전회오리슛 1 file 조루나 2020.10.27 291
40 게임 3D 입문. Vroid Studio로 날먹 해보기. file 조루나 2020.11.09 321
39 게임 3D 입문2. Mixamo 애니메이션으로 날로 먹기 1 file 조루나 2020.11.10 258
38 게임 스프라이트 하프 밉맵 file 조루나 2020.11.20 201
37 게임 스크롤러 에셋과 VerticalLayoutGroup의 저주 file 조루나 2021.03.10 250
36 게임 2D 쿼터뷰 게임의 스프라이트 Sorting Order 정렬 방법 file 조루나 2021.04.30 287
35 게임 2D 쿼터뷰 타일 게임을 3D처럼 해달라잖아! file 조루나 2021.05.27 262
34 게임 게임에 한 붓 그리기 퍼즐을 넣고 싶다길래... file 조루나 2021.07.15 201
Board Pagination Prev 1 2 3 Next
/ 3