표준적인 면도기를 개조합시다!2장부터 3장까지 DecalShader

4452 단어 Unity
이 투고는 UnityAdventCalender2014 14일째 투고다.

표준 면도기를 개조합시다


우선 Unity 다운로드 페이지 여기서 음영을 다운받습니다.

이번에 할 일


다운로드한 면도기 중의 큰 면도기를 개조해 보세요.
표준적인 큰 스크레이퍼를 만들 수 있어요.
• 기본 텍스쳐에 서로 다른 텍스쳐가 중첩됩니다.
하고 싶은 일
• 3단 텍스쳐를 겹치고 싶다
소재 사용보석 보호기의 소재.
여기 있는 세 가지 재료를

이렇게 하다

면도기를 개조하다


개조 전 면도기는 이거예요.

Shader "Decal" {
Properties {
    _Color ("Main Color", Color) = (1,1,1,1)
    _MainTex ("Base (RGB)", 2D) = "white" {}
    _DecalTex ("Decal (RGBA)", 2D) = "black" {}
}

SubShader {
    Tags { "RenderType"="Opaque" }
    LOD 250

CGPROGRAM
\#pragma surface surf Lambert

sampler2D _MainTex;
sampler2D _DecalTex;
fixed4 _Color;

struct Input {
    float2 uv_MainTex;
    float2 uv_DecalTex;
};

void surf (Input IN, inout SurfaceOutput o) {
    fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
    half4 decal = tex2D(_DecalTex, IN.uv_DecalTex);
    c.rgb = lerp (c.rgb, decal.rgb, decal.a);
    c *= _Color;
    o.Albedo = c.rgb;
    o.Alpha = c.a;
}
ENDCG
}

Fallback "Diffuse"
}

그리고 개조해서

Shader "CustamDecal" {
Properties {
    _Color ("Main Color", Color) = (1,1,1,1)
    _MainTex ("Base (RGB)", 2D) = "white" {}
    _DecalTex ("Decal (RGBA)", 2D) = "black" {}
    _FrameTex ("Frame (RGBA)", 2D) = "black" {}
}

SubShader {
    Tags { "RenderType"="Opaque" }
    LOD 250

CGPROGRAM
\#pragma surface surf Lambert

sampler2D _MainTex;
sampler2D _DecalTex;
sampler2D _FrameTex;
fixed4 _Color;

struct Input {
    float2 uv_MainTex;
    float2 uv_DecalTex;
    float2 uv_FrameTex;
};

void surf (Input IN, inout SurfaceOutput o) {
    fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
    half4 decal = tex2D(_DecalTex, IN.uv_DecalTex);
    half4 frame = tex2D(_FrameTex, IN.uv_FrameTex);
    c.rgb = lerp (c.rgb, decal.rgb, decal.a);
    c.rgb = lerp (c.rgb, frame.rgb, frame.a);
    c *= _Color;
    o.Albedo = c.rgb;
    o.Alpha = c.a;
}
ENDCG
}

Fallback "Diffuse"
}

결실


이런 느낌으로.

그렇군요!

해본 일

  • 파라미터의 무늬를 증가시킵니다.
  • leap 함수로 합성.
  • Leap 함수

    fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
    half4 decal = tex2D(_DecalTex, IN.uv_DecalTex);
    c.rgb = lerp (c.rgb, decal.rgb, decal.a);
    
    c.rgb = lerp (c.rgb, decal.rgb, decal.a);
    이것이 바로
    c에 decal 색상 처리 추가
    예를 들면 이거.
    c.rgb = lerp (c.rgb, decal.rgb, 0.5);
    ... 면

    이렇게 됐어요.
    여기 데칼에 여자 그림이 있어요.

    뭐 해요?


    leap(a,b,c)
    a와 b의 삽입을 진행하다
    c는 a->b의 어느 위치입니까?이런 일
    c가 0이면 a의 무늬만 표시합니다
    c가 1이면 b의 무늬만 표시합니다
    만약 c가 0.5라면 a와 b의 색 중간에 있다.
    leap의 c에 b의 α값을 첨가한 것은 α0에서 a의 무늬 색깔을 사용하고 싶어서이다.

    끝말


    면도기가 너무 재미있어요. 조금만 개조하면 여러 가지 일을 할 수 있으니까 다양한 사람들을 꼭 만나셨으면 좋겠어요.
    같은 그림으로 희귀도가 다른 아이콘을 다 만드는 건 좀 아닌 것 같아서 한번 그려봤어요.
    메뉴를 아시는 분과 메뉴를 모르시는 분과 함께 놀자!
    끝!
    이번 자료는 아래와 같다.
    제목: [보석 보호기 FREE]
    URL:[ http://www.jewel-s.jp/ ]

    좋은 웹페이지 즐겨찾기