float3 worldNormal 과 INTERNAL_DATA
Unity3D/Shader 2021. 11. 23. 01:35
Shader "Custom/Test"
{
Properties
{
_Bump ("Normal Map", 2D) = "bump" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf Lambert
sampler2D _Bump;
struct Input
{
//https://forum.unity.com/threads/cannot-get-worldnormal-in-surf-shader.97942/
//float3 worldNormal - 표면 셰이더가 o.Normal에 쓰지 않는 경우 세계 법선 벡터를 포함합니다.
//float3 worldNormal; INTERNAL_DATA - 표면 셰이더가 o.Normal에 쓰는 경우 세계 법선 벡터를 포함합니다.
//픽셀당 노멀 맵을 기반으로 노멀 벡터를 얻으려면 WorldNormalVector(IN, o.Normal)를 사용하십시오.
//따라서 구조체에 넣고 o.Normal에 쓰지 않으면 o.worldNormal로 액세스하고,
//쓸 경우 WorldNormalVector(IN, o.Normal)로 액세스합니다.
float3 worldNormal; INTERNAL_DATA
float2 uv_Bump;
float3 worldPos;
};
void surf (Input IN, inout SurfaceOutput o)
{
o.Normal = UnpackNormal(tex2D(_Bump, IN.uv_Bump));
//float3 worldNormal = WorldNormalVector( IN, float3( 0, 0, 1 ) );
//o.Emission = worldNormal.g;
o.Emission = WorldNormalVector(IN, o.Normal).rgb;
//o.Emission = IN.worldNormal.rgb;
}
ENDCG
}
FallBack "Diffuse"
}
https://forum.unity.com/threads/cannot-get-worldnormal-in-surf-shader.97942/
https://docs.unity3d.com/kr/530/Manual/SL-SurfaceShaders.html
'Unity3D > Shader' 카테고리의 다른 글
unity shader input screenPos (0) | 2021.11.25 |
---|---|
Diffuse Texture Gloss Map 만들기 (Alpha) (0) | 2021.11.23 |
Shader warning in ... CGIncludes/UnityMetaPass.cginc(295) (on d3d11) (0) | 2021.11.18 |
TRANSFORM_TEX (0) | 2021.11.17 |
[URP] Fire Shader Graph (0) | 2021.10.26 |