이펙트아카데미 특강/외주/커뮤니티
언리얼 - HLSL 커스텀노드_픽셀화 효과 제작과정
3D 오브젝트나 전체 화면을 레트로 게임처럼 픽셀 단위로 끊어져 보이게 만드는 방법을 설명합니다.
핵심 원리: UV 언더샘플링 (UV Undersampling)
픽셀화의 본질은 연속적인 텍스처 좌표(UV)를 이산적인 격자(Grid) 형태로 강제로 맞추는 것입니다.
1단계: 표면 머티리얼 (단일 오브젝트 적용)
머티리얼 에디터에서 Custom 노드를 생성하고 HLSL 코드를 작성합니다.
PixelSize라는 변수를 받아 화면을 몇 개의 격자로 나눌지 결정합니다.
핵심 함수: floor() 함수를 사용하여 연속적으로 변하는 UV 값을 가장 가까운 정수(또는 특정 단계)로 내림 처리합니다. 이 과정을 통해 부드러운 그라데이션을 가져야 할 UV 좌표가 계단 현상처럼 뚝뚝 끊기게 되고, 텍스처가 모자이크처럼 샘플링됩니다.
2단계: 포스트 프로세싱 머티리얼 (전체 화면 적용)
개별 오브젝트가 아닌 씬 전체에 효과를 주기 위해 포스트 프로세싱 단계로 넘어갑니다.
포스트 프로세싱에서는 텍스처 UV를 직접 가져올 수 없으므로, HLSL 코드 내에서 GetSceneTextureUV() 함수를 사용해 현재 렌더링된 화면의 스크린 UV를 가져옵니다.
동일한 floor() 로직을 스크린 UV에 적용한 뒤, SceneTextureLookup을 통해 왜곡된 UV 위치에 해당하는 씬의 픽셀 색상(PostProcessInput0)을 가져와 화면 전체를 픽셀화합니다.
float2 gridSize = float2(PixelSize,PixelSize);
float2 uvGrid = floor(uv * gridSize) / gridSize;
float4 FinalColor = SceneTextureLookup(uvGrid, 0, false);
//float3 result = Texture2DSample(tex , texSampler , uvGrid);
return FinalColor;
return GetSceneTextureUV(Parameters);
에반 언리얼5 이펙트 그룹과정[26년초 시작] : https://cafe.naver.com/unrealfx/20727
KUPAFX Stylized 유니티 이펙트 취업과정 : https://cafe.naver.com/unrealfx/21249
트리키 언리얼+후디니 활용 게임 VFX 연출과정 : https://cafe.naver.com/unrealfx/25629
max님의 쌩기초 메쉬활용 이펙트과정 1달특강 : https://cafe.naver.com/unrealfx/24469
eVan텍스쳐 단품과정 : https://cafe.naver.com/unrealfx/24468
rak 유니티 UI연출이펙트 : https://gamefx.co.kr/bbs/page.php?hid=Rak_intro