이름 변경방법 |
이전 포스팅에서 만든 쉐이더를 열어보면 제일 상단에 아래와 같이 나와 있을겁니다.
빨간색 부분이 쉐이더의 이름입니다.
' / '으로 그룹을 지을 수 있씁니다.
이전 포스팅에서는 Custom 안에 CGTest_CreateSurface 라고 명명되어 있었습니다.
/를 제거하고
Shader "CGTest_CreateSurface"를 입력하면 메테리얼에서 쉐이더를 선택할 때 바로 보이는것을 확인할 수 있습니다.
Properties 적용해보기 |
▷ 변수 지정 방법
_변수명 ("인스펙터에 보여지는 이름", 데이터타입) = 데이터 타입에 초기 값
Shader "Custom/colorShader" {
Properties {
_MainTex ("Albedo (RGB)", 2D) = "white" {}5
_Metallic("Metallic", Range(0,1)) = 0.0
_FloatValue("floatValue", float) = 0.3
_ColorValue("ColorValue", Color) = (0,0,0,0)
_VectorValue("VectorValue",Vector) = (0,1,2,3)
}
}
▷Range
_Metallic ("Metallic", Range(0,1)) = 0.0
▷Float
_FloatValue("floatValue", float) = 0.3
▷Color
_ColorValue("ColorValue", Color) = (0,0,0,0)
▷Vector
_VectorValue("VectorValue",Vector) = (0,1,2,3)
▷2D Tex
_MainTex ("Albedo (RGB)", 2D) = "white" {}
변수를 이용한 색상값 변경하기 |
Shader "Custom/CGTest_CreateSurface"
{
Properties{
_ColorValue("ColorValue", Color) = (0,0,0,0)
}
SubShader{
Tags {
"RenderType"="Opaque"
}
Pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
CBUFFER_START(UnityPerMaterial)
float4 _ColorValue;
CBUFFER_END
struct appdata
{
float4 vertex : POSITION;
float3 normal : NORMAL;
};
struct v2f
{
float4 vertex : SV_POSITION;
float3 normal : COLOR2;
};
v2f vert(appdata v){
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.normal = v.normal;
return o;
}
fixed4 frag(v2f i) : SV_Target{
fixed4 testColor;
testColor = float4(1, 1, 1, 1) * _ColorValue;
return testColor;
}
ENDCG
}
}
FallBack "Diffuse"
}
PS. ㅠ_ㅠ.. CG를 URP로 호환시키는 방법 몰라서.. 삽질했음.. 책에도 안나오고.. 구글형님도 배신하고...
결국은 git가서 외쿡님들의 소스보고 분석해서 해결! 감격!
슬라이드바를 사용한 RGB조절하기. |
Shader "Custom/CGTest_SliderColorChange"{
Properties{
_Red("Red", Range(0,1)) = 0.5
_Green("Green", Range(0,1)) = 0.5
_Blue("Blue", Range(0,1)) = 0.5
}
SubShader{
Tags {
"RenderType" = "Opaque"
}
Pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
CBUFFER_START(UnityPerMaterial)
float _Red;
float _Green;
float _Blue;
CBUFFER_END
struct appdata
{
float4 vertex : POSITION;
float3 normal : NORMAL;
};
struct v2f
{
float4 vertex : SV_POSITION;
float3 normal : COLOR2;
};
v2f vert(appdata v) {
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.normal = v.normal;
return o;
}
fixed4 frag(v2f i) : SV_Target{
fixed4 testColor;
testColor = float4(_Red, _Green, _Blue, 1);
return testColor;
}
ENDCG
}
}
FallBack "Diffuse"
}
반응형