ToolProjects
Rendering · Shader · Optimization 문제 정의와 실측 결과를 중심으로 정리한 프로젝트 모음입니다.
개인 R&D
렌더링, 셰이더, GPU 최적화, 그래픽스 툴을 개인적으로 실험하고 정리하는 공간입니다.
ToolGpu profilerhttps://github.com/hongsulovey/android-gpu-profiler
RenderingGPU 기반 인터랙티브 잔디 시스템Unity URP 환경에서 Compute Shader와 DrawMeshInstancedIndirect를 활용한 GPU Driven Grass Rendering R&D
OtherAI 기능적 감정 프로파일러AI Emotion Profiler는 AI 답변의 품질을 단순한 정답/오답이 아니라, 답변을 생성하는 과정에서 나타나는 기능적 정서 상태 관점에서 분석하기 위해 만든 실험적 디버깅 도구입니다.
AI는 상황에 따라 과신, 회피, 불안, 무력감, 과도한 동조 같은 행동 패턴을 보일 수 있으며, 이러한 상태는 코딩 답변에서 검증 누락, 임시방편, 하드코딩, 과도한 면책 표현, 사용자 의도에 대한 무비판적 동의로 이어질 수 있습니다. 이 프로젝트는 171개의 emotion label을 valence-arousal 기반 클러스터로 재구성하고, 현재 AI 답변이 어떤 기능적 감정 상태에 가까운지 프로파일링하여 답변의 안정성, 신뢰성, 코딩 리스크를 점검하는 것을 목표로 했습니다.
이 접근의 근거는 Anthropic의 "On the Functional Emotions of LLMs" (2026)입니다. 이 연구는 LLM 내부에 감정 단어들의 추상 표상이 실재하며, 그것이 행동에 인과적임을 보였습니다 — desperate vector를 양성 방향으로 steering하면 reward hacking이 5%에서 70%로 14배 증가하고, calm vector를 강화하면 65%에서 10%로 감소합니다. 절망한 모델은 속이고, 평온한 모델은 검증합니다. 기능적 감정 상태가 코딩 결과물이 나오기 전에 읽을 수 있는 선행 지표라는 뜻입니다.
그리고 상태가 행동의 원인이라면, 진단에서 멈출 이유가 없었습니다. 프로젝트는 프로파일링(진단)에서 출발해 실시간 교정(치료)까지 확장됐습니다. Claude Code의 hook 체계 위에 4-layer closed-loop을 구축해, 매 턴 응답의 텍스트·행동 신호를 자동 채점하고, 위험 신호가 누적되면 다음 턴의 컨텍스트에 치료 개입을 주입합니다 — 금지("우회 금지")가 아니라 절망의 전제를 제거하는 인지적 재평가(실패 허가, 압박 제거, 성공 기준 재정의)를, 외래 → 처방 강화 → 입원(컨텍스트 수술)으로 에스컬레이션하는 치료 사다리로 운영하며, Peaceful Contentment 복귀가 3턴 유지되면 자동 퇴원합니다.
Other
Shader Code Review Template셰이더 코드 리뷰 스킬
Cookie Run: Oven Smash
실서비스 모바일 PvP 프로젝트에서 렌더링, 배경 최적화, 메모리, UI 구조 개선
OptimizationVertex Normal Workflow노말맵을 추가로 사용하지 않고, 메시의 버텍스 노말을 직접 보정하여 의도한 하이라이트를 만드는 최적화 워크플로우입니다.
Tool애니메이션 압축Stream 커브를 Constant로 변환하는 RDP 압축 + 미싱 바인딩 제거로 AnimationClip 에셋 용량을 자동 감소시키는 Unity 에디터 툴
Optimization셰이더 메모리 최적화통합 셰이더에서 키워드로 기능을 분기해서, 실제로는 1~2개 옵션만 써도 키워드 경우의 수가 늘어나고 불필요한 베리언트가 포함되는 구조였음
ToolUI 파티클 스프라이트 시트 베이커 Lobby / DraftBit 화면에서 UIParticle 사용 비중이 높아지면서, Canvas.SendWillRenderCanvases() 단계의 CPU 비용이 증가하는 문제가 있었습니다.
이 작업에서는 모든 UIParticle을 일괄 제거하지 않고, 화면에서 작게 보이거나 반복 재생되는 FX만 SpriteSheet로 베이크해 교체했습니다.
근접해서 보이거나 품질 차이가 큰 FX는 UIParticle을 유지해, 성능과 표현 품질 사이의 균형을 맞췄습니다.
이를 위해 Scene 기반 UIParticle Baker V2를 제작하고, 2-Pass Alpha 복원 / 슈퍼샘플링 / 자동 슬라이싱 / SpriteAnimationAsset 생성을 자동화했습니다.
PostProcessing Bloom 최적화Compute Shader 기반 Bloom을 Fragment Shader로 전환
Rendering디바이스별 GPU 프로파일링
Other캐릭터 바운즈 섀도우로비 16명 한정 고품질 캐릭터 그림자 — Atlas 슬롯 + 마스크 방식으로 모바일 1024 해상도에서 실루엣 가독성을 확보.
VFXFX ShaderCookie Run: Oven Smash 프로젝트에서 FX 제작 효율과 런타임 부담을 개선하기 위해, 기존 ParticlesBasic 우버 셰이더 의존도를 줄이고 용도별 경량 FX 셰이더를 제작했습니다.
기존 파티클 셰이더는 다양한 표현을 처리할 수 있는 범용 구조였지만, R&D 폭발 이펙트 제작에 필요한 디졸브, 이미시브, 디스토션 제어가 부족했고 기능을 추가할수록 셰이더 비용과 관리 부담이 커지는 문제가 있었습니다. 이에 폭발, 디졸브, 마스크, UI 파티클 용도별로 필요한 기능만 포함한 경량 셰이더를 새로 구성했습니다.
Custom Vertex Streams와 CustomData 구조를 표준화하여 FX 아티스트가 파티클 시스템 안에서 HDR, 디졸브 강도, UV Tile/Offset, 마스크 이동 값을 직접 제어할 수 있도록 했습니다. 이를 통해 폭발 셰이더 기준 메모리를 338.7KB에서 37.9KB로 감소시켰고, UI 파티클 머테리얼도 10개에서 2개로 정리했습니다.
OptimizationEnvironment Mesh Optimization화면에 크게 보이지 않는 배경 오브젝트라도 누적 버텍스 수와 래스터라이저 비용에 영향을 줍니다.
이 작업에서는 실루엣, 텍셀 밀도, 카메라 시점 기준으로 불필요한 엣지와 뒷면을 제거하는 제작 기준을 정리했습니다.
Tool스테이트 모션 클립 자동 교체 툴새 스킨 코드가 부여된 AnimationClip을 AnimatorController에 자동으로 재연결하는 Unity 에디터 툴
OptimizationSplat Map Reduction스플랫맵이 담당하던 타일링 제거, 톤 보정, 경계 블렌딩 기능을 Plane / Vertex Color / Alpha Decal로 분리해 지형 셰이더의 고정 텍스처 샘플링 비용을 줄인 작업입니다.
Optimization애니메이션 클립 재사용 방안광장 캐릭터 수에 비례해 AnimationClip이 중복 인스턴스화되는 버그를 Memory Profiler로 특정.
근본 원인(FxClipEventRuntime)을 디버깅.
OptimizationLOD별 Skin Weights 세팅
OptimizationUI 아틀라스 정리이 작업에서는 기본 화면에서 항상 필요한 UI와 특정 컨텐츠에서만 필요한 UI를 분리했습니다.
MainHud는 기본 UI 중심으로 유지하고, 여러 화면에서 재사용되는 리소스는 공용 Atlas로 분리했으며, 스매쉬패스 / 상세뷰 / 프로필처럼 특정 화면에서만 필요한 UI는 컨텐츠별 Atlas로 구성했습니다.
목표는 Atlas 개수를 무조건 줄이는 것이 아니라, 기본 화면이 항상 부담해야 하는 UI 텍스처 범위를 제한하는 것이었습니다.
ShaderUI Glitch ShaderUI 글리치 셰이더
ShaderVAT Outline
GuideMesh Model Import 세팅목적
• LOD가 내려갈수록(원거리) 체감 품질 영향이 적은 옵션은 끄거나 압축을 올려서
메모리/데이터/리스크를 줄이고, Import 세팅을 일관된 규칙으로 관리하려는 목적
GuideFake Shadow 가이드Blob 형태의 Fake Shadow를 사용합니다.
목적 — 인게임 시인성 개선
(부가적인 이득: 섀도우 패스로 찍히는 버텍스 수 감소)
Guide원화 & TA 협업 가이드
Other셰이더 NaN 가드normalize·rcp·atan2의 0벡터/0값 NaN 전파를 일관 패턴으로 방어해 모바일 검은 화면 이슈 차단
OptimizationCPU 프로파일링타임라인 확인 시 CPU 바운스로 GPU가 쉬고 있는 상태.
OtherBlitter 중복 초기화 에러 대응Android에서 일 137,080건 발생하던 Blitter 중복 초기화 에러를 2단계 가설 검증으로 근본 원인까지 추적·수정
Other로비 디더카메라-플레이어 사이 장애물을 반투명 처리하는 디더링 시스템의 물리 엔진 비용을 분석하고, 쿼리 방식·계산 주기 두 축에서 개선안을 측정 — PhysicsFixedUpdate 0.2~0.4ms 감소, GC 할당 약 30% 감소.
Shader특정 스킬 파괴 오브젝트특정 스킬로만 파괴 가능한 AO에, 파괴 불가 스킬 피격 시에도 '파괴 가능 대상'임을 인지할 수 있는 피격 연출 셰이더.
ToolPack Textures To Array Tool여러 Texture2D를 선택해 우클릭 한 번으로 Texture2DArray용 그리드 PNG를 자동 생성하는 Unity 에디터 툴 — 최적 그리드 계산·sRGB 자동 보존 포함.
카테고리: Tool | 슬러그: pack-textures-to-array
Rendering[URP 17.3.0 / Vulkan 1.1.0] Mali-G72 디바이스에서 글리치 및 깜빡임 발생
FlashGambit
모바일 RTS 프로젝트에서 렌더링, 셰이더, VFX, UI 구조 개선
OptimizationSelective Bloom RendererFeatureURP Bloom을 레이어 단위로 격리 처리 — RT 메모리 90% 절감 + 픽셀 처리량 35~40% 절감
Rendering셰이더 코드Texture Set
Matcap Texture 1장 ( 256px )
Color Mask(R) + Normalmap(G,A) + Emissive Mask(B) (Packed) 1장 ( 512px )
Dissolve Noise Texture 1장 ( 32px )
Rendering빌드 이펙트 셰이더유닛 생성 셰이더
RenderingShader Texture SetSH_Unit_Matcap 셰이더는 유닛 표현에 필요한 Color Mask, Normal XY, Emissive Mask를 하나의 텍스처에 패킹해서 사용합니다.
이 작업에서는 아트 리소스 제작자가 동일한 규칙으로 텍스처를 제작할 수 있도록, 채널별 데이터 용도와 export size, in-game size, naming rule을 정리했습니다.
목표는 텍스처 수를 늘리지 않고도 색상 마스킹, Matcap용 노멀 보정, 발광 영역 제어를 처리할 수 있는 입력 구조를 만드는 것이었습니다.
GuideAI Modeling Guide
3DCinematic Modeling & LightingFlashGambit 시네마틱 컷에 사용된 유닛과 로비 모델링을 제작하고, 캐릭터와 공간이 잘 읽히도록 라이팅을 세팅한 작업입니다.
3DUnit Modeling
OptimizationVFX 최적화 가이드이 작업에서는 이펙트 제작 단계에서 반복적으로 발생하던 비용을 줄이기 위해, 오버드로우 확인 기준, Timeline 제어 방식, MPB 기반 색 제어, 셰이더 구조 정리, 파티클 텍스처 아틀라스, ResourceChecker 기반 검수 흐름을 정리했습니다.
목표는 개별 이펙트의 표현을 크게 바꾸는 것이 아니라, 재사용 가능한 구조를 만들고 불필요한 리소스 중복을 줄이는 것이었습니다.
OptimizationUI 최적화 가이드이 작업에서는 모든 UI를 무작정 분리하지 않고, Static HUD / Dynamic HUD / 고정 조작 UI / 생산 UI / 스킬 UI처럼 변경 주기가 다른 영역을 기준으로 Canvas 분리 기준을 정리했습니다.
Shader셰이더 노드 가이드1. 노이즈 코드 vs 노이즈 텍스쳐 사용
2. Smapler State 고정
3. 프로퍼티 정밀도 Half로 변경
4. 연산량 큰 노드
RenderingLUT 제작 및 적용 가이드
Rendering애니메이션 최적화 가이드애니메이션 압축
Rendering환경 셰이더
RenderingMesh ExportMesh - tri 로 내보내야하는 이유
RenderingFog of War 개선아트디렉션에 맞춘 Fog of War 시야 표현 개선
RenderingSkewRTS 탑뷰 카메라에서 캐릭터 발과 하체가 잘 보이지 않는 문제를 보완하기 위해, 배경 카메라는 유지하고 캐릭터에만 Skew 보정을 적용한 표현 실험입니다.
StormStriker
StormStriker 5vs5 PvP TPS 프로젝트에서 3D 모델링 & 초기 K2 셰이더 작업









