unity 2

[Unity 2D Shader] 2D 스프라이트 팔레트 스왑 쉐이더

색상만 다른 여러 픽셀 이미지를 위한 쉐이더 위 이미지와 같이 게임을 제작하다보면 픽셀의 형태는 동일하나 색상만 다른 경우가 존재한다. 이런 경우 각 이미지를 만들어 사용하는 방법도 있지만 스프라이트 스왑 기법을 사용하면 생산성을 높일 수 있다. 팔레트 스왑은 이미지를 색상이 아닌 컬러 인덱스를 가지도록 만들고 이후 렌더링 시 현재 선택된 팔레트에서 각 인덱스의 색상을 가져와 렌더링 하는 기법이다. 구현 유니티에서 이를 구현할 수 있는 한가지 방법은 기본 스프라이트 쉐이더를 다음과 같이 수정하면 된다. 1. 컬러들을 지정할 팔레트 2D 텍스처 프로퍼티를 추가한다. 2. spriteFrag에서 SampleSpriteTexture(IN.texcoord)를 통해 스프라이트 픽셀 값을 추출한다. 3. 2번에서 ..

그래픽스/Unity 2023.07.24

[Unity 2D Shader] 최상위 반투명 픽셀만 혼합하는 스프라이트 쉐이더

물에 비친 상을 위한 쉐이더 이번에 만든 쉐이더의 목적은 물 표면에 비친 상을 표현하기위한 쉐이더이다. 좀 더 정확히 말하면 불투명 스프라이트 위에 반투명 스프라이트들이 존재할 때 반투명 스프라이트들의 픽셀중 가장 깊이가 얕은 픽셀만 혼합되고 깊은 픽셀들은 무시되게 된다. 토이 프로젝트를 개발하는데 필요하여 구현하게 되었다. 이상적인 구현방법 맨 처음 계획한 구현방법은 다음과 같다. s1 -물 표면 이미지에 사용될 쉐이더 ZWrite On 그외 기존 sprite-default와 동일 s2 - 물 위에 비친 반투명 이미지에 사용될 쉐이더 ZWrite On ZTest Less AlphaTest on s1보다 늦게 렌더링 될 것이 보장 s2의 오브젝트들은 깊이가 얕은 것에서 깊은 순으로 렌더링 그외 기존 sp..

그래픽스/Unity 2023.07.14