반응형
1.기본 텍스쳐 출력
기본텍스처를 출력하기전에 기본 쉐이더 코드에 필요없는것을 삭제하고 쓸 내용만 남겨놓는 연습을했다.
오로지 텍스쳐만 넣을수있는 형식으로 다 날렸다
Shader "Custom/Basic"
{
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Standard fullforwardshadows
#pragma target 3.0
sampler2D _MainTex;
struct Input
{
float2 uv_MainTex;
};
fixed4 _Color;
void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
- _MainTex 변수
- 인터페이스에 나타나는 이름 "Albedo(RGB)" 이다.
- Albedo(RGB)텍스쳐는 RGB값만 받으며 2D텍스쳐를 입력받는다.
- 텍스쳐 2D 이미지가 없을경우 기본 표출색상은 White 이다
- UV와 결합되지않은 텍스쳐 이미지는 Sampler로 선언한다.
UV정보는 Vertex에게 있다.
Unity 내부 인터페이스가 아닌 vertex 내부 정보를 사용할때에는 Input 구조체 안에 선언후 사용해야함.
Vertex
: 1개의 vertext에는 여러 정보가 존재
- 좌표 (Position)
- UV
- Light UV
- 컬러
- 노말(Bump)
- _MainTex 안에 들어있는 UV정보를 이용하기위해 Input 구조체 안에 선언.
- float로 사용해도되나 받아오는 텍스처 컬러가 채널당 8비트 이하이므로 fixed로도 충분하기 때문에 사용
- C에 포함된 RGB 값을 Albedo에 저장
- C에 포함된 알파(a)값을 Alpha에 저장
출력화면
2. 흑백 텍스쳐 출력
Shader "Custom/Basic"
{
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Standard fullforwardshadows
#pragma target 3.0
sampler2D _MainTex;
struct Input
{
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = (c.r + c.g +c.b)/3;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
기본 출력코드에 o.Albedo 만 수정한다.
- 흑백 값을 설정하기 위해서는
R/G/B 모두 동일한 숫자값으로 이루어져야한다. - 이 조건을 충족하기 위해 R/G/B 모두 더해 3으로 나누어준다
- 이 방법을 그레이스 케일 방식이라하며
흑백 표출에 가장 기본방식이다.
출력 화면
반응형
'내 공부 > Unity_' 카테고리의 다른 글
Post processing Stack 영화같은 필터 적용하기 (0) | 2020.12.07 |
---|---|
유니티 2D deltaTime 활용하여 화살떨어지게하기 (1) | 2020.09.01 |
유니티 2D 플레이어 좌우로 이동하기 (1) | 2020.08.31 |