Unity 61

[SCRIPT][리소스 관리] Material Manager Tool

[SCRIPT][리소스 관리] Material Manager Tool 기능 선택한 메테리얼의 셰이더 명, 셰이더에 존재하는 프로퍼티 변수를 보여줌. 선택한 메테리얼 프로젝트 창에서 선택 선택한 메테리얼의 셰이더 프로젝트 창에서 선택 메테리얼 즐겨찾기 기능 셰이더랑 메테리얼을 계속해서 바꿔 가며 작업할 때, 정신없고, 찾는데 시간이 오래 걸려 만들어 보았다. 급하게 만드느라 처음 의도와 다르게 만들었는데, 시간 날 때 기능을 개선해야겠다. 마땅한 이름이 생각나지 않아 Material Manager Tool이라고 이름을 지었다. 프로그래머분들이 보면 뒤집어질 수 있는 이름이네... :) 코드 링크 : https://asatala.tistory.com/37

Unity/Code 2023.11.02

[RENDERING] Planar Reflection, Render

[RENDERING] Planar Reflection, Render 정보 전달을 위한 글이 아닌, 개인적으로 잊지 않기 위해서 기록하였습니다. 1부 - 플레이너 리플렉션 기본 1. 글의 기록 목적 2. 사용 방법 3. 구현 구조 4. 성능을 위한 기본 규칙 2부 - 플레이너 리플렉션을 사용하며 얻을 수 있는 부산물 1. 플레이너 리플렉션과 렌더러 2. RenderDoc에서... 3. 컬링 기능으로 카메라 비활성화 3부 - 마치며... 1부 - 플레이너 리플렉션 기본 글의 기록 목적 컴퓨터 그래픽스에서 반사 관련된 기술이 몇 가지 있는데, 그중 게임을 개발하며 흔하게 접하는 것이 리플렉션 프로브와 플레이너 리플렉션이다. 대부분의 반사가 그렇듯 이 두 가지 방식도 카메라로 특정 오브젝트를 이미지로 촬영한 후..

[RENDERING] Rendering Layers

[RENDERING] Rendering Layers 정보 전달을 위한 글이 아닌, 개인적으로 잊지 않기 위해서 기록하였습니다. 글의 기록 목적 테스트 환경 사용 방법 렌더링 관련 간단한 테스트 성능 관련 글의 기록 목적 게임을 개발하다 보면, 특정 오브젝트에 특정 광원만 영향을 주길 원할 때가 생기게 된다. 이 경우 흔하게 오브제의 Layer, 광원의 Rendering/Culling Mask 이용하여 선택적으로 라이팅을 적용하면 쉽게 해결할 수 있다. 그렇지만 이렇게 개발을 진행하게 되면 문제점이 생길 수 있다. 특히나 대규모 프로젝트나 MMO, 연출 등 아주 많은 기능들이 붙는 게임일수록 문제점이 생길 수 있는데, Layer의 경우, Tag와 함께 오브젝트의 타입이나 상태 등을 나타내기 위하여 수많은 ..

[SHADER] Texture Channel Swap

보통 2D, 3D 할 것 없이, 게임 내 오브젝트를 표현하기 위해서는 최소 한 장의 "색을 표현" 하는 텍스처가 필요하다. 물론 텍스처를 사용하지 않는 게임도 존재하지만, 어디까지나 보통의 게임은 필수이다. 컴퓨터 그래픽스에서 색은 RGB 채널을 이용하고, 추가한다면 Alpha 채널이 붙는다. 그리고 이 채널 3, 4개가 보통 하나의 이미지 파일이 된다. 요즘 오픈하는 게임을 보면 색 이외에도, 쇠를 더욱더 쇠같이, 가죽을 더욱 가죽같이 보이도록 여러 가지 기능들이 추가되어 있는데, 이런 기능들을 위하여 더욱 많은 수의 텍스처를 필요로 하게 되었다. 셰이더로 이런 재질들을 만들어 주더라도, 그 재질이 들어가는 범위를 효율적으로 관리하기 위하여, 마스킹 텍스처를 사용하는 것이 일반적이다. 이런 여러 이유들..

[Shader Graph][CODE] Custom Function - Light

Shader Graph v14.0.8에서 작성 Custom Function으로 사용하기 위한 코드 백업 Main Light void CustomLight_float( float3 WorldPos, out float3 Direction , out float3 Color, out float ShadowAtten, out float DistanceAtten) { #ifdef SHADERGRAPH_PREVIEW Direction = float3(1,1,1); Color = float3(1,1,1); ShadowAtten = 1.0f; DistanceAtten = 1.0f; #else #if defined(_MAIN_LIGHT_SHADOWS_SCREEN) && !defined(_SURFACE_TYPE_TRANSP..

Unity/Code 2023.08.07