셰이더를 사용하여 Unity에서 그림자 색상을 변경합니다.
소개
Unity에서 색채의 그림자가 필요하게 되었고, 셰이더를 사용하여 그림자의 색을 바꾸어 보았다.
※셰이더 방금 시작했기 때문에 실수 등은 용서해 주세요.
환경
준비
Unity Project에서 새로운 셰이더를 추가합니다.
[Create]→[Shader]→[Standard Surface Shader]
이름은 "ColoredShadow"로 둡니다. 이것을 마우스 오른쪽 버튼으로 클릭하고 같은 이름으로 머티리얼을 만들어 봅시다.
[Create]→[Material]
이제 작성한 셰이더 파일을 편집기에서 열고 씁니다.
코딩
ColoredShadow.shaderShader "Example/ColoredShadow" {
Properties{
_MainTex("Texture", 2D) = "white" {}
_ShadowColor("ShadowColor", Color) = (0,0,1,1)
}
SubShader{
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf SimpleLambert
sampler2D _MainTex;
half4 _ShadowColor;
struct Input {
float2 uv_MainTex; // uv座標
};
void surf(Input IN, inout SurfaceOutput o) {
o.Albedo = tex2D(_MainTex, IN.uv_MainTex); //テクスチャ貼り付け
}
// SimpleLambertの設定 lightDir:光方向 atten:影のパラメータ
half4 LightingSimpleLambert(SurfaceOutput s, half3 lightDir, half atten) {
half NdotL = dot(s.Normal, lightDir); //ライティング計算(表面法線と光方向の内積)
half4 c;
c.rgb = s.Albedo * _LightColor0.rgb * (NdotL * min((atten + _ShadowColor.rgb), 1) * 1.5); //影に色を付ける
c.a = s.Alpha;
return c;
}
ENDCG
}
Fallback "Diffuse"
}
절차
그런 다음 Unity에서 처음 만든 머티리얼에 위의 코드를 작성한 셰이더를 적용합니다.
그런 다음 그림자가있는 물체 (바닥, 벽 등)에 재질을 적용합니다.
그러면 그림자에 색이 붙습니다. 그림자의 색상도 셰이더 속성에서 설정할 수 있습니다.
Reference
이 문제에 관하여(셰이더를 사용하여 Unity에서 그림자 색상을 변경합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yutoakaut/items/18998513abbfbab12977
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ColoredShadow.shader
Shader "Example/ColoredShadow" {
Properties{
_MainTex("Texture", 2D) = "white" {}
_ShadowColor("ShadowColor", Color) = (0,0,1,1)
}
SubShader{
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf SimpleLambert
sampler2D _MainTex;
half4 _ShadowColor;
struct Input {
float2 uv_MainTex; // uv座標
};
void surf(Input IN, inout SurfaceOutput o) {
o.Albedo = tex2D(_MainTex, IN.uv_MainTex); //テクスチャ貼り付け
}
// SimpleLambertの設定 lightDir:光方向 atten:影のパラメータ
half4 LightingSimpleLambert(SurfaceOutput s, half3 lightDir, half atten) {
half NdotL = dot(s.Normal, lightDir); //ライティング計算(表面法線と光方向の内積)
half4 c;
c.rgb = s.Albedo * _LightColor0.rgb * (NdotL * min((atten + _ShadowColor.rgb), 1) * 1.5); //影に色を付ける
c.a = s.Alpha;
return c;
}
ENDCG
}
Fallback "Diffuse"
}
절차
그런 다음 Unity에서 처음 만든 머티리얼에 위의 코드를 작성한 셰이더를 적용합니다.
그런 다음 그림자가있는 물체 (바닥, 벽 등)에 재질을 적용합니다.
그러면 그림자에 색이 붙습니다. 그림자의 색상도 셰이더 속성에서 설정할 수 있습니다.
Reference
이 문제에 관하여(셰이더를 사용하여 Unity에서 그림자 색상을 변경합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yutoakaut/items/18998513abbfbab12977
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(셰이더를 사용하여 Unity에서 그림자 색상을 변경합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yutoakaut/items/18998513abbfbab12977텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)