반응형
Unity - Manual: Material charts (unity3d.com)
0. 소스맵을 세이더에 넣어준다.
1. 노멀은 데이터를 풀어서 사용해야한다
UnpackNormal (); 를 사용해야한다.
노말맵
UnpackNormal ();으로 받아
fixed3 n = UnpackNormal(tex2D (_BumpMap, IN.uv_BumpMap));
UnpackNormal 은 반환은 float3 인데, 매개변수는 float 4 로 받는다.
fixed3 n = UnpackNormal(tex2D (_BumpMap, IN.uv_BumpMap));
이런식으로 언팩해서 사용해야한다.
AO 맵 넣기
AO 맵을 새로 넣어서, 값으로 넣어주면 된다
Shader "Custom/Test"
{
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_BumpMap ("Normalmap", 2D) = "bump" {}
_MainTex2 ("Albedo (RGB)", 2D) = "white" {}
_Metallic ("Metallic", Range(0,1)) = 0.0
_AOmap ("AOmap", 2D) = "AOmap" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Standard
sampler2D _MainTex;
sampler2D _MainTex2;
sampler2D _BumpMap;
sampler2D _AOmap;
struct Input
{
float2 uv_MainTex;
float2 uv_MainTex2;
float2 uv_AOmap;
float2 uv_BumpMap;
};
half _Glossiness;
half _Metallic;
void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
fixed4 d = tex2D (_MainTex2, IN.uv_MainTex2);
fixed3 n = UnpackNormal(tex2D (_BumpMap, IN.uv_BumpMap));
fixed4 ao = tex2D (_AOmap, IN.uv_MainTex);
o.Occlusion = ao.r;
o.Normal = n;
o.Albedo = c.rgb;
o.Metallic = _Metallic;
o.Smoothness = d.r;
}
ENDCG
}
FallBack "Diffuse"
}
★ 요큘루젼 맵은 UV를 안 받는다. 메인 텍스쳐의 UV를 받아야지 정상적으로 작동한다.
fixed4 ao = tex2D (_AOmap, IN.uv_MainTex);
AO 있고 없고 차이
반응형
'Unity > 그래픽스프로그래밍' 카테고리의 다른 글
0504_ 버텍스컬러 찍은 부분만 텍스쳐링 나오게하기 (0) | 2021.05.04 |
---|---|
0504 _ 특정 부분만 러프니스 또는 메탈릭 주기 (버텍스 컬러, 그레이 스케일) (0) | 2021.05.04 |
0504_ 그래픽스 폴리브러쉬 사용해서 돌에 이끼 및 텍스쳐 그려보기 (0) | 2021.05.04 |
0504 _ 그래픽스, 버텍스 색 바꾸기 (0) | 2021.05.04 |
0503 _ 움직이는 불 노이즈(Gray Scale)맵을 소스(값)으로 써서 (0) | 2021.05.03 |