728x90
반응형
// ====================================================================================
// Tags: 언제 어떻게 렌더링엔진에서 렌더링을 할 지 정하는 것
// 항상 Key-Value 페어로 사용해야 한다.
// SubShader의 순서 및 기타 파라미터를 판정하는데 사용하며
//Unity에 의해 인식되어 반드시 SubShader 섹션 안에서 작성되어야 한다.
Tags
{
// = "Transparent + 1" 처럼 사용할 수도 있다.
// (이 경우 Transparent:3000 + 1 = 3001이다)
"Queue" = "Transparent"
// = 반투명이 가능한 Shader로 설정
"RenderType"="Transparent"
// = '프로젝터'라는 Prefab에 영향을 받지 않도록 한다.
"IgnoreProjector" = "True"
// = material 미리보기에서 표시 방법을 바꿀 수 있다.
"PreviewType" = "Plane"
}
// Queue: 오브젝트를 그리는 순서를 결정하는 값이다.
// Queue의 종류 (사전에 정의된 Queue의 종류)
// Background: 가장 먼저 렌더링 된다. 배경으로 사용될 것들을 위해 사용해야한다.
// Geometry(default): Queue를 지정하지 않으면 기본으로 설정된다. 불투명 오브젝트에 사용한다.
// AlphaTest: 투명한 오브젝트에 사용한다.
// Transparent: Geometry와 AlphaTest 후에 뒤부터 순서대로 렌더링 한다.
// 알파 블렌딩 처리를 하는 쉐이더에 사용한다.
// (유리, 파티클 효과) (깊이 버퍼에 기록하지 않는 쉐이더)
// Transparent: 사전적 의미로 투명한, 들여다보이는
// Overlay: 오버레이 효과를 위해 사용한다.
// 가장 마지막으로 렌더링 하는 경우에 사용한다. (렌즈 플레어 등)
// Overlay: 사전적 의미로 덮어씌우다. 더하다.
// LensFlare: 렌즈에 광선이 들어와 영상이 부옇게 되거나 둥근 흰 반점이 나타나는 현상
// 내부에서는 각 Queue는 정수 인덱스에 의해 표현된다.
// (순서 값, 우리가 일반적으로 랜더큐라고 부르는 수치)
// Background: 1000
// Geometry: 2000
// AlphaTest: 2450
// Transparent: 3000
// Overlay: 4000
// 숫자 값이 낮을 수록 먼저 렌더링 된다.
// RenderType: 쉐이더를 사전에 정의 된 여러 그룹으로 분류한다.
// RenderType의 종류
// Opaque: 대부분의 불투명한 쉐이더
// (Normal](shader-NormalFamily.html), Self Illuminated, Reflective, Terrain 쉐이더).
// Transparent: 대부분의 부분적으로 투명한 쉐이더
// (Transparent, 파티클, 글꼴, Terrain 추가 패스 쉐이더).
// TransparentCutout: 마스킹 된 투명 쉐이더 (Transparent Cutout, 2 패스 식물 쉐이더).
// Background: Skybox 쉐이더.
// Overlay: GUITexture, 후광(Halo), 플레어 쉐이더(Flare shaders).
// TreeOpaque: Terrain 엔진 나무 껍질.
// TreeTransparentCutout: Terrain 엔진 나뭇잎.
// TreeBillboard: Terrain 엔진 빌보드 Tree.
// Grass: terrain 엔진의 grass.
// GrassBillboard: Terrain 엔진 빌보드 Grass.
// DisableBatching: DrawCallBatching을 사용할 때
// 배칭을 하지 않도록 할 수 있다.
// DisableBatching의 종류
// True: Batching 처리를 비활성화 함
// False: 기본 값. Batching 비활성화를 하지 않음
// LODFading: LOD Fading이 활성화 되어 있을 때
// Batching 처리를 비활성화 함
// LODFading: 두개의 인접한 LOD를 블렌딩하여 부드러운 전환 효과를 줄 때 사용한다.
// ForceNoShadowCasting: 그림자를 투영하지 않게 한다.
// ForceNoShadowCasting의 종류
// True: 그림자를 투영하지 않는다.
// False는 필요 없다.
// Shader Replacement를 사용하거나, 다른 SubShader에서
// Pass를 계승하지 않을 경우에 유용하다고 한다.
// Shader Replacement (ReplacementShader라고 함): 렌더링을 할 때
// MeshRenderer들이 가지고 있는 Material의 Shader를
// 사용자가 원하는 것으로 바꾸는 기능이다.
// (이 기능을 통해 그림자 같은 여러 부가적인 처리를 할 수 있다고 함)
// ReplacementShader의 사용 방법은 아래와 같다.
// Shader shader = Shader.Find("ShaderName");
// string replacementTag = "replace";
// camera.RenderWithShader(shader, replacementTag);
// Tag는 선택 사항이라고 함
// https://hrmrzizon.github.io/2017/09/29/using-relplacement-shader/ 참고
// 추후 딥하게 다뤄보자.
// IgnoreProjector: 쉐이더가 프로젝터의 영향을 받는지 유무
// (그림자, 조명 등을 만들 때 사용)
// IgnoreProjector의 종류
// True: 프로젝터의 영향을 받지 않는다.
// Flase: 프로젝터의 영향을 받는다. 주로 반투명한 물체나 지형 바닥에 사용
// 프로젝터: 그림자 생성, 탄흔 생성, 조명 효과 등을 만들기 위한 기능
// https://docs.unity3d.com/kr/530/Manual/class-Projector.html 참고
// 프로젝터: 일종의 효과를 주는 카메라 같은 것인데
// 프로퍼티 값에 따라 독창적인 효과를 줄 수 있다.
// 프로젝터 사용 시 Cutout 쉐이더에 적용되지 않는 문제가 있다고 한다.
// CutOut 쉐이더에 IgnoreProjector를 False로 바꿔주면 적용되는데
// 투명한 부분까지 빛을 받는 문제가 생긴다고 한다.
// 프로젝트 사용 시 문제에 대한 출처 : https://shimans.tistory.com/34
// 해결책은 잘... 아시는분은 공유 부탁드립니다.
// CanUseSpriteAtlas: 쉐이더가 스프라이트를 위한 것임을 선언하는 것.
// CanUseSpriteAtlas의 종류
// True: 스프라이트를 위한 것임을 선언
// False: 쉐이더가 스프라이트용인데
// 아틀라스로 묶일 때 작동하지 않는다면 False로 바꿔주자
// SpritePacker
// PreviewType: 미리보기에서 material의 표시 방법을 나타낸다.
// PreviewType의 종류
// Plane, Skybox, Sphere 등
// 솔직히 PreviewType을 사용할 필요가 있는 것인지..
// ====================================================================================
반응형
'유니티 > 기본기' 카테고리의 다른 글
Unity - Canvas - Scaler (2) | 2020.10.27 |
---|---|
Unity - Canvas (8) | 2020.10.26 |
유니티 Shader 공부 (SubShader, LOD) (0) | 2020.07.28 |
유니티 Shader 공부 (Properties) (2) | 2020.07.27 |
유니티 JsonViewer 툴 V2 (Newtonsoft.json) (3) | 2020.06.30 |