https://docs.unity3d.com/kr/530/Manual/StandardShaderMaterialParameterAlbedoColor.html
알베도 컬러 및 투명도 - Unity 매뉴얼
Albedo 파라미터는 표면의 베이스 컬러를 제어합니다.
docs.unity3d.com
Shader "Custom/fire"
{
Properties
{
_MainTex ("Main Texture", 2D) = "white"{}
_MainTex2 ("Main Texture2", 2D) = "white"{}
_Speed("Speed", Range(0,10.0)) = 1
_BrightNess("BrightNess", Range(0,1)) = 1
_Color("Color",Color) = (1,1,1,1)
}
SubShader
{
Tags { "RenderType"="Transparent" "Queue"="Transparent"}
CGPROGRAM
#pragma surface surf Standard alpha:fade
#pragma target 3.0
sampler2D _MainTex;
sampler2D _MainTex2;
float _Speed;
float _BrightNess;
float _Color;
struct Input
{
float2 uv_MainTex;
float2 uv_MainTex2;
};
void surf (Input IN, inout SurfaceOutputStandard o)
{
//데이터
float2 d_uv = IN.uv_MainTex2;
d_uv.y -= _Time.y;
float4 d = tex2D(_MainTex2, d_uv * _Speed);
//d.rgb
//d.r => 0
//체크
float2 c_uv = IN.uv_MainTex;
float4 c = tex2D(_MainTex, c_uv + d);
//체크를 보여주고 있음
o.Emission = c.rgb * _BrightNess;
o.Alpha = c.a ;
}
ENDCG
}
FallBack "Diffuse"
}
Shader "Custom/vertexcolor"
{
Properties
{
_MainTex("Main Texture", 2D) = "white"{}
_MainTex2("Main Texture2", 2D) = "white"{}
_MainTex3("Main Texture3", 2D) = "white"{}
_MainTex4("Main Texture4", 2D) = "white"{}
}
SubShader
{
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf Standard fullforwardshadows
#pragma target 3.0
sampler2D _MainTex;
sampler2D _MainTex2;
sampler2D _MainTex3;
sampler2D _MainTex4;
struct Input
{
float4 color : COLOR;
float2 uv_MainTex;
float2 uv_MainTex2;
float2 uv_MainTex3;
float2 uv_MainTex4;
};
void surf (Input IN, inout SurfaceOutputStandard o)
{
float4 c =tex2D(_MainTex, IN.uv_MainTex);
//o.Emission = c.rgb + IN.color.rgb;
IN.uv_MainTex2 -= _Time.y * 0.2;
//float2 d_uv2 = IN.uv_MainTex2;
//d_uv2.y -= _Time.y;
float4 d = tex2D(_MainTex2,IN.uv_MainTex2);
o.Emission = lerp(c.r, d.rgb, IN.color.r ); // 보이지 않는 곳을 0 보이는 곳을 1이라고 생각
float4 e = tex2D(_MainTex3, IN.uv_MainTex3);
o.Emission = lerp(o.Emission, e.rgb, IN.color.g);
float4 f = tex2D(_MainTex4, IN.uv_MainTex4);
o.Emission = lerp(o.Emission, f.rgb, IN.color.b);
}
ENDCG
}
FallBack "Diffuse"
}
Shader "Custom/rock"
{
Properties
{
_MainTex ("Main Texture", 2D) = "white"{}
_MainTex2 ("Main Texture2", 2D) = "white"{}
}
SubShader
{
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf Standard
#pragma target 3.0
sampler2D _MainTex;
sampler2D _MainTex2;
struct Input
{
float4 color : COLOR; //버텍스 컬러
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutputStandard o)
{
//이끼
float4 d = tex2D(_MainTex2, IN.uv_MainTex);
//돌맹이
float4 c = tex2D(_MainTex, IN.uv_MainTex);
//이끼를 버텍스 컬러 R 부분에 출력하자
o.Albedo = lerp(c.rgb, d.rgb, IN.color.r);
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
https://docs.unity3d.com/kr/530/Manual/StandardShaderMaterialParameterMetallic.html
https://docs.unity3d.com/kr/2022.1/Manual/StandardShaderMaterialParameterSmoothness.html
https://docs.unity3d.com/Manual/StandardShaderMaterialParameterNormalMap.html
Unity - Manual: Normal map (Bump mapping)
Normal map (Bump mapping) Normal maps are a type of Bump Map. They are a special kind of texture that allow you to add surface detail such as bumps, grooves, and scratches to a model which catch the light as if they are represented by real geometry. Unity
docs.unity3d.com
평활도 - Unity 매뉴얼
평활도(Smoothness) 개념은 스페큘러 워크플로우와 메탈릭 워크플로우 모두에 적용되며 매우 비슷한 방식으로 작동합니다. 디폴트로 메탈릭 또는 스페큘러 텍스처 맵이 할당되지 않았다면 슬라이
docs.unity3d.com
메탈릭모드: 메탈릭 파라미터 - Unity 매뉴얼
Metallic 워크플로에서 작업하는 경우(스페큘러 워크플로와 달리) 표면의 반사도 및 광원 반응이 메탈릭 레벨과 평활도 레벨에 따라 바뀝니다.
docs.unity3d.com
Shader "Custom/Metallic"
{
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
_NormalMap ("NormalMap", 2D) = "bump"{}
_NormalStength("Normal Stength", Range(0.1, 2)) = 0
_Occlusion("Occlusion", 2D) = "white"{}
}
SubShader
{
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf Standard
#pragma target 3.0
sampler2D _MainTex;
sampler2D _NormalMap;
sampler2D _Occlusion;
float _NormalStength;
struct Input
{
float2 uv_MainTex;
float2 uv_NormalMap;
};
half _Glossiness;
half _Metallic;
void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
float4 n = tex2D(_NormalMap, IN.uv_NormalMap);
float3 normal = UnpackNormal(n);
fixed4 occlusion = tex2D(_Occlusion, IN.uv_MainTex);
o.Occlusion = occlusion;
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Normal = float3(normal.x * _NormalStength , normal.y * _NormalStength , normal.z);
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
Shader "Custom/rockGolem2"
{
Properties
{
_MainTex("MainTex",2D) = "white" {}
_MainTex2("Left Hand",2D) = "white" {}
_MainTex3("Right Hand",2D) = "white" {}
_NormalMap ("NormalMap", 2D) = "bump"{}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
_Occlusion ("Occlusion", 2D) = "white"{}
}
SubShader
{
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf Standard
#pragma target 3.0
sampler2D _MainTex;
sampler2D _MainTex2;
sampler2D _MainTex3;
sampler2D _NormalMap;
half _Glossiness;
half _Metallic;
sampler2D _Occlusion;
struct Input
{
float2 uv_MainTex;
float2 uv_MainTex2;
float2 uv_MainTex3;
float4 color : COLOR;
float2 uv_NormalMap;
};
void surf (Input IN, inout SurfaceOutputStandard o)
{
//fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
//o.Albedo = IN.color.rgb;
//o.Alpha = c.a;
IN.uv_MainTex2.y += _Time.y * 0.2;
IN.uv_MainTex3.y += _Time.y * 0.2;
fixed4 body = tex2D (_MainTex, IN.uv_MainTex);
fixed4 lHand = tex2D (_MainTex2, IN.uv_MainTex2);
fixed4 rHand = tex2D (_MainTex3, IN.uv_MainTex3);
//float2 d_uv2 = IN.uv_MainTex2;
//d_uv2.y -= _Time.y;
//o.Albedo = lerp(0, body, IN.color.r);
o.Albedo = lerp(body, lHand, IN.color.r);
o.Albedo = lerp(o.Albedo, rHand, IN.color.b);
float4 n = tex2D(_NormalMap, IN.uv_NormalMap);
float3 normal = UnpackNormal(n);
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Normal = normal;
o.Occlusion = tex2D(_Occlusion, IN.uv_MainTex);
}
ENDCG
}
FallBack "Diffuse"
}
'산대특 > 게임 UIUX 프로그래밍' 카테고리의 다른 글
Shader -Blinn Phong 스펙큘러 (0) | 2024.02.22 |
---|---|
Shader - Lambert (0) | 2024.02.20 |
Shader 기초 (0) | 2024.02.18 |
Json 역직렬화 -> 직렬화 -> 데이터 저장 -> 경로확인 (배열) (0) | 2024.02.15 |
Json 역직렬화 -> 직렬화 -> 데이터 저장 -> 경로확인 (0) | 2024.02.15 |