커스텀 라이팅/구조체
struct SurfaceOutput
fixed3 Albedo
fixed3 Normal
fixed3 Emission
half Specular // 스펙큘러 파워
fixed Gloss //스펠귤로 강도
fixed Alpha
struct SurfaceOutputStandard
fixed3 Albedo
fixed3 Normal
fixed3 Emission
half Metallic
half Smoothness
half Occlusion
fixed Alpha
struct SurfaceOutputStandardSpecular
fixed3 Albedo
fixed3 Specular // 스펙큘러 컬러
fixed3 Normal
half3 Emission
half Smoothness
half Occlusion
fixed Alpha
# pragma 뒤에 붙는 알파 옵션
alpha 와 alpha:auto
일반조명에서는 일반적 알파 블렌딩이지만 물리 기반 조명 함수에서는 프리멀티드 블렌딩(유리처럼 반투명에도 반사기능이 있는 알파)
alpha:blend
알파 블렌딩
alpha:fade
전통적 알파 블렌딩 가동
alpha:premul
프리멀티드 블렌딩 가동
alphatest:VariableName
알파 테스팅(컷아웃). 컷오프되는 값은 variableName으로 지정될 float 변수에 해당
적절한 쉐도우 캐스터 패스를 생성하기 위해 addshadow 지시어를 사용할 수 있다.
keepalpha
불투명한 표면쉐이더에서도 조명함수의 알파값 유지
decal:add
Additive Decal 쉐이더.다른 표면위에 놓인 오브젝트에 사용하기 위한 것.
decal:blend
반투명 decal쉐이더. 다른 표면위에 놓여있고 알파 블렌딩을 사용하는 객체.
버텍스 데이터/파이널 컬러 조절 파라미터
vertex:VertexFunction
커스텀 버텍스 수정기능.
finalcolor:ColorFunction
사용자 정의 최종 색상 사중자
finalgbuffer:ColorFunction
G버퍼내용을 수정하기 위한 커스텀 디퍼트 패스
finalprepass:ColorFunction
데퍼드 렌더링을 위한 커스텀 프리패스 베이스 패스
그림자/테셀레이션 파라미터
addshadow
쉐도우 캐스터 패스 추가. 버텍스 애니메이션을 가져오기 때문에 버텍스 편집에 사용됨
fullforwardshadow
포워드 렌더링 패스에서 모든 조명에 그림자가 생기게 할 때 사용. (일반적인 쉐이더에서는 디렉셔널 라이트에만 그림자가 생긴다)
tessellate:TessFunction
DX11 GPU테셀레이션 사용.
코드생성옵션
(쉐이더 최적화할 때 유용)
exclude_path:deferred
exclude_path:forward
exclude_path:prepass
작성된 렌더링 패스 제거
noshadow
그림자 비활성화
noambient
앱비언트 라이팅/라이트 프로브 미적용
novertexlights
forward 렌더링에서 라이팅/라이트 프로브 미적용
nolightmap
라이트맵 미적용
nodirlightmap
실시간 동적 조명 미적용
nofog
유니티 내장 포그 지원하지 않음
nometa
메타패스(라이트맵/동적 전역 조명을 위해 표면정보 추출하는 패스) 만들지 않음
noforwardadd
포워드 렌더링 추가패스 비활성화
서피스 쉐이더 input 구조
float3 viewDir
뷰 방향 포함. 시차효과/림라이팅등의 계산에 사용.
float4 coor:COLOR
보간된 버텍스 컬러를 가지고 있다
float4 screenPos
스크린 스페이스 위치를 가지고 있다
float3 worldPos
월드 공간상의 위치를 포함한다
float3 wordlRefl
노멀이 작성되지 않은 경우 월드 리플렉션 벡터를 포함함.
float3 worldNormal
노멀이 작성되지 않은 경우 월드 노멀 벡터를 포함함
float3 worldRefl; INTERMAL_DATA
노멀이 작성되었을 경우 월드 리플렉션 벡터를 표현함.
픽셀당 노멀맵에 기초하여 리플렉션 벡터를 얻으려면 WorldReflectionVector(IN, o.Normal) 사용.
float3 worldNormal;I NTERMAL_DATA
노멀이 작성되었을 경우 월드 노멀 벡터를 표현함.
픽셀당 노멀맵에 기초하여 노멀벡터를 얻으려면 WorldNormalVector(IN, o.Normal) 사용.
데이터 타입
float
32비트 사용, 월드스페이스 포지션, 텍스쳐 코디네이트, 삼각함수, 지수등 복잡한 함수를 포함하는 스칼라 계산에 사용
half
16비트를 사용. 짧은 벡터, 디렉션, 오브젝트 스페이스 포지션, HDR 컬러등에도 사용
fixed
11비트 사용. 일반적인 칼라(HDR같은 특수 텍스쳐 아닌 일반 텍스쳐)와 간단한 계산용
int
소수점을 지원하지 않음. 루프카운터, 행렬의 인수등으로 일반적인 상황에서는 여러 플랫폼에서 잘 사용되는 타입
LOD
Tags{} 아래 써있는 LOD는 Level Of Detail.
vertexLit 종류의 쉐이더=100
Decal, Reflective vetexLit = 250
Diffuse=200
Diffuse Detail, Reflective Bumped Unlit, Reflective Bumped VertexLit = 250
Bumped, Specular = 300
Bumped Specular = 400
Parallax = 500
Parallax Specular = 600
Tags{}
{"RendetType"=""}
Opaque
불투명 쉐이더에서 사용
Transparent
알파 블렝딩 쉐이더에서 사용
TransparentCutout
알파 테스팅 쉐이더에서 사용
Background
스카이박스 쉐이더에서 사용
Overlay
GUI(Graphic User Interface. 사용자가 그래픽을 통해 컴퓨터와 정보를 교환하는 환경) 텍스쳐, 후광, 플레어 쉐이더에서 사용
TreeOpaque
터레인에 사용되는 나무 엔진의 줄기부분
TreeTransparentCutout
터레인에 사용되는 나무엔진의 나뭇잎 부분
TreeBillboard
터레인에 사용되는 나무엔진의 빌보드
Grass
터레인에 사용되는 나무엔지느이 풀
GrassBillboard
터레인에 사용되는 나무엔진의 풀의 빌보드
{"Quere"=""}
렌더링 순서에 대한 태그. 큐를 사용하여 오브젝트 그리는 순서를 결정할 수 있음.
Background
다른것들보다 먼저 렌더링 됨. 배경으로 있어야 할 것들을 위해 사용
Geometry(default)
불투명 오브젝트가 사용. 이걸 굳이 쓰지 않아도 이것으로 지정됨.
AlphaTest
알파테스트 지오메트리에 사용. 모든 불투명 오브젝트 뒤에 그리는 편이 효율적이라 별도의 큐로 존재.
Transparent
지오메트리, 아파테스트 후 뒤부터 순서대로 렌더링 됨. 알파블렌딩하는 것은 모두 여기에 있어야 함.
Overlay
오버레이 효과를 위해 사용. 마지막으로 렌더링하는 것은 여기에 있어야 함(렌즈 플레어등)
Queue 태그의 특수 사용법
그리는 순서를 강제조절 할 수 있음.
Background- 1000
Geometry(default)-2000
AlphaTest-2500
Transparent-3000
Overlay-4000
여기에 +1같이 숫자를 더해주면 2001번째로 그려지게 됨(2000번째보다 앞으로 나온다는 뜻)
Properties의 추가기능
[HideIOnInspector]
존재하지만 보이지 않음
[NoScaleOffset]
텍스쳐의 유브이 타일링과 옵셋메뉴 사라짐
[Normal]
텍스쳐 속성이 노멀맵이 들어올 것으로예상해서 들어오지 않으면 강제 변환을 물어봄
[Toggle]
토글메뉴(체크)가 생김. Yes/no의 출력값 1.0/0.0
[HDR]
텍스쳐에 속성에 HDR텍스쳐가 들어올 것으로 예상.
컬러 프로퍼티스에 사용하면 HDR컬러 입력 인터페이스를 만들 수 있음
[Enum(이름1,1의 값, 이름2,2의 값)]
float값의 팝업메뉴 만듦.최대 7개까지 가능.
[PowerSlider(3.0)]
제곱이 적용된 슬라이더. 3.0은 예시로, 3.0제곱이 됨
[KeywordEnum(이름1, 이름2, 이름3)]
위의 이넘과 같은 개념. 최대 9개까지 가능.
[Spece]
한칸 아래로 이동시킴
[Space(50)]
50포인트쯤 아래로 이동시킴
[Header(이름)]
볼드체의 제목이 생김
[Gamma]
float또는 벡터 유형으로 표시된 속성은 기본적으로 비컬러데이터로 인식.
컬링옵션
cull back
뒷면은 렌더링되지 않음
cull front
앞면은 렌더링 되지 않음. 조명 연산은 그대로 남음
cull off
양면 렌더링
블렌딩 옵션
Blend SrcAlpha OneMinusSrcAlpha
일반적 알파 블렌딩
Blend One OneMinusSrcAlpha
프리멀티드 알파 블렌딩
Blend One One
additive 블렌딩
BlendOneMinusDstColor One
soft addtive 블렌딩
Blend DstColor Zero
멀티블렌딩
Blend DstColor SrcColor
2x 멀티블렌딩. 텍스쳐 색상의 영향이 더 강해짐.
'기술면(CG) > 3D프로그램' 카테고리의 다른 글
유니티 쉐이더 기초13 (0) | 2025.02.07 |
---|---|
유니티 쉐이더 기초 12 (0) | 2025.02.07 |
유니티 쉐이더 기초 11 (0) | 2025.02.07 |
유니티쉐이더 기초 10 (0) | 2025.02.07 |
FBX를 Biped로 만들어주는 스크립트 (0) | 2025.02.07 |