본문 바로가기
7. 유니티 후처리 기술의 이해와 구현 (1) 이번 장은 기초 편의 마지막 단계로 후처리(Post-processing) 기술에 대해 다룹니다. 후처리란 장면의 모든 물체가 렌더링되어 프레임 버퍼에 저장된 후, 이를 화면에 출력하기 직전에 픽셀 데이터를 수정하는 기술을 말합니다.구체적인 구현 원리는 카메라의 근평면(Near Clip Plane)에 화면을 가득 채우는 사각형 면편(Quad)을 배치하고, 여기에 전용 셰이더를 적용하여 프레임 버퍼 이미지를 텍스처로 받아 계산하는 방식입니다. 유니티에서는 이를 위해 OnRenderImage 함수와 Graphics.Blit 메서드를 제공하며, 이를 통해 렌더링된 이미지를 2차적으로 수정할 수 있습니다.주요 학습 포인트는 다음과 같습니다:화면 공간 UV 좌표 계산 및 플랫폼별 반전 문제 해결.색조 조절(밝기, .. 2026. 1. 6.
6. ASE를 활용한 마법의 거울(포탈) 효과 구현하기 이번 시간에는 1장을 마무리하며 스텐실 테스트(Stencil Test)와 뎁스 테스트(Depth Test)에 관한 지식을 중점적으로 살펴보겠습니다. 마법의 거울 사례를 통해 셰이더 과정, 스텐실 테스트, 뎁스 테스트, 렌더 큐(Render Queue) 등 전반적인 렌더링 메커니즘을 더 깊이 이해하는 것이 목표입니다.마법의 거울 효과는 거울의 평면을 통해서만 내부의 세계를 관찰할 수 있는 기술입니다. 내부 모델은 실제로 존재하지만 특정 표면을 통해서만 보이며, 현실 세계의 모델과 교차하더라도 서로 영향을 주지 않습니다. 이는 특정 구역에 마스크(Mask)를 그리는 스텐실 테스트 기술을 주로 사용하며, 깊이 쓰기 및 렌더 큐 설정을 조정해 물체 간의 충돌 문제를 처리합니다.스텐실 테스트는 출력 병합(Outp.. 2026. 1. 5.
5. Unity 셰이더 : 버텍스 오프셋을 이용한 촉수 성장 애니메이션 이번에서는 이전까지 다루었던 픽셀 셰이더(Fragment Shader) 중심의 효과에서 벗어나, 버텍스 셰이더(Vertex Shader)에 집중해 봅니다. 버텍스 터널 내에서 간단한 계산을 통해 모델의 정점을 변형시키고, 이를 통해 흥미로운 버텍스 애니메이션 효과, 구체적으로는 촉수가 자라나는 과정을 구현하는 방법을 다룹니다. 기본적인 원리는 원래 규칙적인 원기둥 형태의 모델을 스케일링하고, 윗부분을 잘라내어(culling) 마치 땅 밑에서 무언가가 자라나는 듯한 착각을 일으키는 것입니다. 1단계: 모델링 준비먼저 3D 모델링 소프트웨어에서 촉수 모델을 준비합니다.기본 형태: 원기둥(Cylinder)으로 시작하며, 부드러운 변형을 위해 분할(segment) 수를 높게 설정합니다 (예: 높이 분할 50)... 2026. 1. 5.
4. Unity 셰이더: MatCap과 박막 간섭 구현하기 이번에는 Unity Shader를 사용하여 흔히 '오색찬란한 검은색'이라 불리는 딱정벌레(Beetle) 질감을 구현하는 방법을 정리해 보았습니다. 물리학적으로는 박막 간섭(Thin-film interference)이라고 불리는 이 현상을, 고전적이지만 여전히 강력한 MatCap(Material Capture) 기술을 응용하여 만들어 보겠습니다.1. 핵심 기술: MatCap (Material Capture)이란?MatCap은 조명과 재질 정보를 미리 하나의 텍스처(구체 이미지)에 구워놓고, 카메라 공간의 법선(View Space Normal)을 기준으로 매핑하는 기술입니다.장점: 연산 비용이 매우 저렴하며, 복잡한 라이팅 없이도 독특한 질감을 낼 수 있습니다.단점: 시점에 따라 조명 방향이 고정되어 있어 .. 2026. 1. 4.
03. 캐릭터 림 라이트 및 스캔(유광) 효과 구현과 코드 변환 [ASE 강좌] 이번 포스팅에서는 Amplify Shader Editor(이하 ASE)를 사용하여 캐릭터의 외각을 빛나게 하는 **림 라이트(Rim Light)**와 위에서 아래로 빛이 훑고 지나가는 스캔(Scan/Flow) 효과를 구현하는 방법을 정리했습니다. 또한, ASE로 짠 노드를 실제 HLSL 코드로 변환하는 과정까지 다룹니다.1. 씬(Scene) 및 기본 설정효과가 잘 보이도록 어두운 배경을 세팅합니다.Skybox 교체: 기존 스카이박스 대신 어두운 톤의 환경으로 변경합니다.바닥 설정: 반사가 없는 어두운 바닥을 깔고, Fog(안개)를 켜서 바닥과 배경의 경계를 자연스럽게 처리합니다.셰이더 타입: 빛의 영향을 받지 않고 자체 발광만 표현하기 위해 Unlit(무광) 모드를 선택합니다.2. ASE 노드 구현 과정.. 2026. 1. 4.
02 Shader 코드 입문 기초 1. 셰이더의 기본 구조와 속성 정의셰이더 파일은 유니티 인스펙터와 소통하는 부분과 실제 그래픽 연산을 수행하는 부분으로 나뉩니다.셰이더 블록 전체 구조Shader "경로/이름": 셰이더의 전체 이름을 정의하며, 슬래시를 사용해 메뉴 구조로 관리할 수 있습니다셰이더 파일의 가장 첫 줄에 위치하며, 유니티 에디터 내에서 해당 셰이더를 찾기 위한 경로를 지정합니다.코드 내의 이름과 실제 파일의 이름이 일치하지 않아도 작동하지만, 관리를 위해 통일하는 것이 권장됩니다.Properties: 재질(Material) 패널에 나타날 변수들을 선언합니다이 블록에 선언된 변수들은 아티스트가 유니티 인스펙터 창에서 직접 조절할 수 있는 인터페이스가 됩니다.선언된 변수들은 이후 Pass 블록 내부에서 동일한 이름으로 다시 .. 2026. 1. 2.
실시간 렌더링 파이프라인 기초 1. 개요 및 렌더링의 분류렌더링은 컴퓨터 그래픽스에서 소프트웨어가 3D 모델 데이터를 2D 이미지로 변환하는 과정을 의미합니다. 응용 시나리오에 따라 크게 두 가지로 나뉩니다.리얼타임 렌더링: 게임이나 VR 분야에서 사용되며, 초당 24~60프레임 이상의 속도를 유지해야 하므로 다양한 최적화 수단이 필요합니다.오프라인 렌더링: 영화 제작 등에서 사용되며, 매우 사실적인 효과를 위해 한 장의 이미지를 렌더링하는 데 몇 분에서 몇 시간이 소요되기도 합니다. 2. CPU 단계: 애플리케이션 단계 (Application Stage)GPU가 본격적인 그림을 그리기 전, CPU는 어떤 것을 그릴지 결정하고 데이터를 준비하는 역할을 합니다.(Culling, 컬링)화면에 보이지 않는 물체를 렌더링 대상에서 제외하여 .. 2026. 1. 2.
ASTC_User_Guide 번역 6 10. 유니티(Unity)와 ASTC유니티는 하드웨어가 지원하는 경우 Android, iOS, tvOS 및 WebGL에서 ASTC를 활성화할 수 있도록 지원합니다. 안드로이드에서는 HDR 및 LDR 프로필을 모두 사용할 수 있습니다.10.1 빌드 설정 (Build settings)각 플랫폼에는 기본 텍스처 압축 형식이 있습니다. 예를 들어, 안드로이드의 기본값은 RGBA 텍스처의 경우 ETC2, RGB 텍스처의 경우 ETC입니다. 압축 설정은 File > Build Settings에서 변경할 수 있습니다.Texture Compression 설정은 모든 텍스처에 전역으로 적용됩니다.Don’t override 옵션은 기본 텍스처 압축 형식을 사용한다는 것을 의미합니다.10.2 텍스처별 설정 (Texture-.. 2025. 12. 15.
ASTC_User_Guide 번역 5 8 게임 자산을 위한 ASTC 사용 (Using ASTC for game assets)개발자로서 게임 자산(asset)을 압축할 때는 몇 가지 사항을 고려해야 합니다. 이러한 고려 사항은 텍스처의 사용 방식과 요구되는 이미지 품질에 따라 달라집니다.8.1 적절한 비트레이트 선택더 높거나 낮은 비트레이트를 선택함으로써 데이터 크기 대비 이미지 품질을 조절하여 최적의 균형을 맞출 수 있습니다. astcenc와 Mali Texture Compression Tool, 그리고 여타 도구 및 게임 엔진들은 모두 ASTC가 지원하는 전체 범위 내에서 비트레이트나 블록 크기를 지정할 수 있게 해줍니다.다음 이미지는 서로 다른 비트레이트가 이미지 품질에 어떤 영향을 미치는지 보여줍니다.좋은 방법은 뷰어(관찰자)와의 거리.. 2025. 12. 14.
ASTC_User_Guide 번역 4 6. ASTC의 이점 (ASTC benefits)ASTC는 기존 텍스처 압축 방식들에 비해 여러 가지 장점을 제공합니다. 이 가이드의 이번 섹션에서는 이러한 장점들을 살펴보겠습니다.6.1 적응형 압축 (Adaptive compression)ASTC라는 약어의 첫 단어는 **'Adaptive(적응형)'**이며, 이 가이드를 읽고 나면 그 이유가 명확해질 것입니다. 각 블록은 항상 128비트의 저장 공간으로 압축되지만, 개발자는 매우 다양한 텍셀(texel) 블록 크기 중에서 선택할 수 있습니다. 압축기는 이 128비트를 어떻게 사용할지 결정하는 데 있어 엄청난 자유도를 가집니다.압축기는 최상의 이미지 품질을 얻기 위해 블록 단위로 **색상(colors)**과 **가중치(weights)**에 할당되는 비트 .. 2025. 12. 14.
ASTC_User_Guide 번역 3 5.5 퀸트(Quints)와 트리트(Trits)5개의 심볼을 가진 알파벳(이를 퀸트, quint라고 함)을 3비트로 올림하여 처리하는 대신, 3개의 퀸트 문자를 함께 묶는 것이 더 효율적인 해결책입니다. 5개 심볼 알파벳의 3개 문자는 5^3 (125)가지의 조합을 가지며, 6.97비트의 정보를 담고 있습니다. 우리는 이 3개의 퀸트 문자를 7비트에 저장할 수 있으며, 이때 저장 공간 낭비는 0.5%에 불과합니다.비슷한 방식으로 3개의 심볼을 가진 알파벳(이를 트리트, trit라고 함)을 구성하고, 트리트 문자를 5개씩 묶을 수 있습니다. 각 문자 그룹은 3^5 (243)가지의 조합을 가지며, 7.92비트의 정보를 담고 있습니다. 우리는 이 5개의 트리트 문자를 8비트에 저장할 수 있으며, 이때 저장 공.. 2025. 12. 9.
[번역]양식화된 잔디 렌더링 https://talkartist.cn/article/1936751166476042240리틀 몽키 브라더 테크니컬 아트하느님께서는 "빛이 생겨라!"라고 말씀하셨습니다.루쉰은 "씨발!"이라고 말한 적이 있다."빛"과 "잔디"가 만나면 어떻게 될지 궁금했어요. 그래서 구글 검색을 해봤는데, 거의 똑같은 정보였어요. 모든 페이지에 "잔디 최적화"라는 문구가 적혀 있었죠. 잠도 오지 않아서 밤새도록 꼼꼼히 살펴보다가 마침내 행간의 의미를 알아냈어요. 페이지 전체에 "바퀴를 재발명하라"라는 문구가 가득 적혀 있었죠! 그래서 다음 날 아침, 일찍 작업실에 도착해서 책상 위에 "잔디"를 하나 깎아냈어요.조명 및 렌더링의 세 가지 법칙몇 년간의 작업을 거쳐, 저는 문제 해결에 매우 유용한 렌더링의 세 가지 법칙을 요약.. 2025. 12. 9.
반응형