docs.unity3d.com/kr/530/Manual/SL-CullAndDepth.html 유니티 - 매뉴얼: ShaderLab: Culling & Depth Testing ShaderLab: Culling & Depth Testing 컬링은 시점과 반대편을 향한 폴리곤을 렌더링하지 않는 최적화입니다. 모든 다각형은 앞면과 뒷면이 있습니다. 컬링은 오브젝트의 대부분이 닫혀있는 사실을 이용합 docs.unity3d.com 쉐이더보다 다른 쪽을 공부하고 있었는데 그냥 간단해 보이길래 한 번 만들어 볼까? 싶어서 쉐이더 코드를 끄적였다. 역시 마음 먹은 건 쉽게 공부하게 되지 않는 것 같다. Properties { _MainTex("Texture", 2D) = "white" {} _Color("Color",..
Shader "Custom/CustomAlphaTestingCutOutShader" { Properties{ //_Color 구문이 없다면 놀랍게도 그림자가 나오지 않는다고 한다. //그러니까 지금 이 쉐이더에서 볼 수 없는 그림자를 그리는 Pass에서 이 인자 값을 사용하는 것으로 예상할 수 있다. _Color("Color", Color) = (1,1,1,1) _MainTex("Albedo (RGB)", 2D) = "white" {} //이 인자 값을 사용하여 텍스쳐에서 0.5를 기준으로 더 밝은 알파는 그리지 않는다. //즉, 알파 테스팅 쉐이더는 반투명 렌더링을 하지 않는다. _Cutoff("Alpha cutoff",Range(0,1)) = 0.5 } SubShader{ //RenderType은 T..
알파를 표현할 수 있는 쉐이더 코드 Shader "Custom/CustomAlphaBlendingShader" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} } SubShader { //Transparent는 '투명한'을 의미한다. 그러니까 Tag가 Transparent라면 투명한 객체를 그리는데 사용하는 것이다. //Queue는 렌더링을 할 순서를 결정하는 Tag로써, //Transparent에는 3000이라는 값이 포함되어있다. //가장 기본적인 Geometry(2000), 가장 마지막에 그리는 Overlay(4000) 사이의 값이다. //따라서 "Queue" = "Transparent" 라면 불투명 객체 다음, 오버레이 객체 이전에 그려지는 ..
https://docs.microsoft.com/ko-kr/dotnet/api/system.collections.generic.list-1?view=netcore-3.1 List Class (System.Collections.Generic) 인덱스에서 액세스할 수 있는 강력한 형식의 개체 목록을 나타냅니다.Represents a strongly typed list of objects that can be accessed by index. 목록을 검색, 정렬 및 조작하는 메서드를 제공합니다.Provides methods docs.microsoft.com 1. 간혹 크기를 설정하지 않은 리스트에 Clear() 같은 코드를 사용해서 오류가 뜨는데, 애초에 선언할 때 크기를 정해주자. public List i ..
한참이 지난 후, WaitWhile 과 WaitUntil을 알게 되었습니다. 이에 수정합니다. 수정 전 글의 방식은 매 프레임마다 애니메이션이 끝났는지 확인하는 코드입니다.틀린 코드인 것은 아닙니다.매프레임마다 처리해야 할 일이 있다면yield return null 이나 yield return new WaitForFixedUpdate 같이프레임마다 재생상태를 검사해야하는 것은 맞습니다. 하지만 단순히 재생이 완료되었는지를 확인하는 거라면WaitUntil 과 WaitWhile 을 사용하면 됩니다. IEnumerator EndFrameEvent() { Animator anim = GetComponent(); //매 프레임 단위로 while 문을 반복하여 애니메이션의..
//테크니컬 아티스트를 위한 유니티 쉐이더 스타트업 발췌 Properties{ _Color("Color", Color) = (1,1,1,1) _Size("Out Line Size", float) = 1 } SubShader{ Tags { "RenderType" = "Opaque" } LOD 200 //cull은 '배제'를 의미한다. front를 배제하여 렌더링 하지 않았으니 그릴 것은 면의 뒷면일 뿐이다. //그러니까 면을 뒤집는 것과 같다. (= flip) cull front //여기서 부터가 면을 뒤집고 버텍스를 이동시키는 첫번째 Pass CGPROGRAM #pragma surface surf _Outline vertex:vert noshadow noambient #pragma target 3.0 /..
//테크니컬 아티스트를 위한 유니티 쉐이더 스타트업 발췌알파 블렌딩을 하면 반투명의 객체들이 서로 엉켜 엉망으로 렌더링 되는 경우가 있는데,2Pass를 사용하여 첫 Pass는 z 버퍼에 그리되, 화면엔 렌더링 하지 않는 것으로 문제를 해결할 수 있다고 한다. SubShader{ Tags {"RenderType" = "Transparent" "Queue" = "Transparent"} cull back //Zwrite를 켜서 가려지는 부분은 그리지 않도록 한다. zwrite on //하지만 화면에는 아무것도 그리지 않는다. ColorMask 0 //1Pass CGPROGRAM #pragma surface surf _DrawZBufferButNoDraw noambient noforward..