스니핏 - 조각
코드 스니핏 - 코드 조각
셰이더는 서브셰이더의 리스트로 구성됩니다. 최소한 하나의 서브셰이더가 있어야 합니다. Unity는 셰이더를 로드할 때 서브셰이더의 리스트를 살펴보고 최종 사용자의 기기가 지원하는 셰이더 리스트 중 가장 위에 있는 것을 선택합니다. 만약 지원되는 서브셰이더가 없으면 Unity는 폴백 셰이더 사용을 시도합니다.
->서브셰이더를 여러개 짜놓고 가장 위에 있는 걸 우선적으로 돌리는데
그게 안되면 그 밑에 있는 쉐이더를 돌리고
안되면 그 밑에 있는 쉐이더를 돌리고
그것도 안되면 폴벡 쉐이더를 돌림
슬라이더 만들기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
Shader "NewShader"
{
Properties
{
_TestColor1 ("TestColor1",Color) = (1,1,1,1)
_TestColor2("TestColor2",Color) = (1,1,1,1)
_Red("Red",Range(0,1))=0 //외부에서 값을 조정할 있도록 슬라이더를 만듦
_Green("Green",Range(0,1)) = 0
_Blue("Blue",Range(0,1)) = 0
_BrightDark("Bright $ Darkness", Range(-1,1))=0
}
SubShader
{
Tags { "RenderType"="Opaque" }
CGPROGRAM
//1: 설정 부분
//전처리라고도 할수 있고 스니핏이라고 부르기도 한다.
//쉐이더의 조명설정이나 기타 세부적인 분기를 정해주는 부분이다.
#pragma surface surf Standard fullforwardshadows
//2: Input이라는 구조체다
//이안에 코드는 엔진으로 부터 받아와야 할 데이터가 들어간다.
struct Input
{
float4 color : COLOR; //Input안에 아무것도 없으면 에러가 난다.
}; //2
//변수 추가
float4 _TestColor1;
float4 _TestColor2;
float _Red;
float _Green;
float _Blue;
float _BrightDark;
//3: surf라는 이름을 가진 함수 영역이다.
//색상이나 이미지가 출력되는 부분을 만들수 있다.
void surf (Input IN, inout SurfaceOutputStandard o)
{
float4 test = float4 (1,0,0,1);
//o.Albedo = float3(1, 0, 0);
//o.Emission = _TestColor1 + _TestColor2;
o.Emission = float3(_Red,_Green,_Blue) + _BrightDark;
} //3
ENDCG
}
FallBack "Diffuse"
}
|
lerp를 이용해서 그라디언트를 만들 수 있음
lerp(X,Y, a)
X, Y는 타입이 같아야함
포토샵에서 다른 이름으로 저장 ->TGA파일로 만들어서 넣거나
PSD 파일 자체를 유니티에 넣으면 알파가 보임
텍스쳐 두장을 겹쳐 보이게 할 수 있음
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
Shader "Custom/tex"
{
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_MainTex2 ("Albedo (RGB)", 2D) = "white" {}
_TestGradient("TestGradient",Range(0,1)) = 0
}
SubShader
{
Tags { "RenderType"="Opaque" }
CGPROGRAM
// Physically based Standard lighting model, and enable shadows on all light types
#pragma surface surf Standard
sampler2D _MainTex;
sampler2D _MainTex2;
float _TestGradient;
struct Input
{
float2 uv_MainTex;
float2 uv_MainTex2;
};
void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 d = tex2D(_MainTex2, IN.uv_MainTex2);
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Emission = lerp(c.rgb, d.rgb, 1-c.a); //앞 두개는 타입이 같아야함, 순서 변경
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
|
'C# > 수업내용' 카테고리의 다른 글
2020.07.07. 수업내용 - 인공지능 강화학습 1 (0) | 2020.07.07 |
---|---|
2020.06.24. 수업내용 - Shader 3 (움직이는 불 만들기-uv) (0) | 2020.06.24 |
2020.06.22. 수업내용 - Shader (0) | 2020.06.22 |
2020.05.27. 수업내용 - 2D Collider, Rigidbody, 이동 및 점프 (0) | 2020.05.28 |
2020.05.26. 수업내용 - Coroutine 으로 애니메이션 실행하기 (0) | 2020.05.26 |