본문 바로가기

유니티/기본기

유니티 Shader 공부 (Tags)

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을 사용할 필요가 있는 것인지..
 // ====================================================================================

 

다람쥐와 포동포동이

 

RememberCook 9월 28일 정식 출시!

두번째 게임인 RememberCook이 출시되었습니다. 귀여운 캐릭터들이 나오는 간단한 게임이며 플레이어의 공간인지능력을 테스트하는 게임입니다. 아래 링크를 통해 다운 받으실 수 있으니 많은 관��

chipmunk-plump-plump.tistory.com

반응형

'유니티 > 기본기' 카테고리의 다른 글

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