반응형
SMALL
쉐이더에서의 변수
- 변수명시작은 영어, 숫자로 시작하면 안된다.(첫글자 외에는 ok).
- 변수명은 공백, 특수문자, 한글사용 불가.('_' 예외)
- 변수명 중복 허용 안됨.
- 대소문자를 구별하니 변수명 선언시 주의.
1. 변수 선언
void surf (Input IN, inout SurfaceOutputStandard o)
{
// 변수선언
//float4 test;
// 변수 초기화
float4 test = float4(1,0,0,1);
// 변수 할당
// float4 이지만 r,g,b float3 값만 적용
o.Albedo = test;
// float4 변수의 float3 값만을 할당
o.Albedo = test.rgb;
}

2. RGB 순서 변경
- 선언한 변수의 부분값을 바꾼뒤 할당해주는 것이 가능하다.
- 이를 Swizzling 이라고 한다.
void surf (Input IN, inout SurfaceOutputStandard o)
{
float4 test = float4(1,0,0,1);
// 같은 변수값 순서 변경
// 변수 순서 변경 = 초록
o.Albedo = test.grb;
// 변수 순서 변경 = 파랑
o.Albedo = test.gbr;
// 동일값 할당 = 흰색
o.Albedo = test.rrr;
// 단일값 할당 = 검은섹
o.Albedo = test.b;
}




3. 변수 위치
- 당연하지만 함수 내에서 선언한 뒤 할당하도록 하자
- 다만 원래대로라면 마젠타 컬러로 오류를 표기하겠지만 유니티 5.5 이후 버전부터는 계산 가능한 부분까지는 계산한 뒤 보여주기 때문에 하기 스크린샷 처럼 마젠타 컬러가 아닐 수 있으니 주의.
- 혹 자주 쓰이는 변수명이라면 함수 밖에 선언해준 뒤 사용하는 것도 방법이다.
void surf (Input IN, inout SurfaceOutputStandard o)
{
// 할당한 뒤 선언 = 에러
o.Albedo = test.grb;
float4 test = float4(1,0,0,1);
}


4. 변수 연산 및 부분값 활용
void surf (Input IN, inout SurfaceOutputStandard o)
{
float r = 1;
float2 gg = float2(0.5,0);
float3 bbb = float3(1,0,1);
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
// 검은색
o.Albedo = float3(0,0,0);
// 빨간색
o.Albedo = float3(r,0,0);
//초록색 = float3 (0,0.5,0)
o.Albedo = float3(0,gg);
//밝은 핑크색에 가까운 색상 = float3(1,0.5,1)
o.Albedo = float3(bbb.b,gg.r,r.r);
o.Alpha = c.a;
}




다음 포스팅은 외부 입력값 출력에 대한 포스팅
반응형
LIST
'게임 그래픽 프로그래밍 > 개인공부' 카테고리의 다른 글
| 서피스 쉐이더 - 외부의 입력값 출력 (0) | 2023.12.20 |
|---|---|
| 서피스 쉐이더 - 쉐이더 구조 및색상 출력 (0) | 2023.12.15 |
| 서피스 쉐이더 - 쉐이더 Properties (0) | 2023.12.14 |
| 서피스 쉐이더 - 마테리얼, 쉐이더 생성 및 오브젝트 적용방법 (0) | 2023.12.13 |
| 그래픽 쉐이더 - 렌더링 파이프라인 (0) | 2023.12.12 |