Cubemap이란?
Cubemap은 일종의 텍스쳐다.
텍스쳐 한 장으로 사방향을 모두 표현하는 특수한 텍스쳐다.
환경 텍스쳐를 이용해 반사를 표현한다.
1. 주변 이미지를 텍스쳐로 만든다.
2. 이를 오브젝트에 씌운다.
Ambient Cube
Cubemap은 반사 표현시도 쓰이지만,
Ambient Color(환경광)기능을 개선하기 위해서도 사용한다.
큐브맵 사이즈를 극도로 줄인다.
이걸 입혀 산란광을 표현한다.
이를 Ambient Cube라고 부른다.
이렇게 이미지를 이용해 조명 표현하는 방식을 IBL (Image Based Lighting)이라고 한다.
코드
Shader "Custom/part16-1"
{
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Cube ("Cubemap", Cube) = ""{}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert noambient
#pragma target 3.0
sampler2D _MainTex;
samplerCUBE _Cube;
struct Input
{
float2 uv_MainTex;
float3 worldRefl; // 반사 벡터 받기.
};
UNITY_INSTANCING_BUFFER_START(Props)
// put more per-instance properties here
UNITY_INSTANCING_BUFFER_END(Props)
void surf (Input IN, inout SurfaceOutput o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
float4 re = texCUBE(_Cube, IN.worldRefl); // 반사 벡터를 UV로 사용한다.
o.Albedo = 0; // 반사 100%로 만들기 위해 0으로 한다. 빈사 50%원하면 *0.5 하고 Emission에도 0.5를 넣어주면 될 것이다.
o.Emission = re.rgb; // Emission에 넣는다. 반사란 주변 이미지를 받아 그대로 비추는 것이기 때문이다.
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
'셰이더 (Shader) > 유니티 쉐이더 스타트업 - 정종필' 카테고리의 다른 글
[Unity/Shader] 파트16-1 : Z 버퍼 (0) | 2023.08.23 |
---|---|
[Unity/Shader] 파트15-2 : Normalmap이 적용된 Cubemap (0) | 2023.08.23 |
[Unity/Shader] 파트14-8 : Diffuse Wraping 기법 응용 (0) | 2023.08.22 |
[Unity/Shader] 파트14-7 : Diffuse Wraping 기법 (1) | 2023.08.22 |
[Unity/Shader] 파트14-6 : Fresnel 이용해 외곽선 만들기 (0) | 2023.08.22 |
댓글