TECHARTNOMAD | TECHARTFLOWIO.COM

TechArt 48

Greedy Meshing(그리디 메싱) 이론, 처리 구조, 활용 이유 및 Voxel Chunk(복셀 청크)

2001년 쯤인가.. 삼성종합기술원에서 연구원으로 있을 때 복셀렌더링용 플러그인 개발에 참여 해 보고는 너무나 오랫만이라 트렌드 따라가기 위해 메모 해 놓는 중이다.– Unity Engine 6 기반 최신 Voxel 게임 사례 중심서론Voxel(복셀) 기반 게임과 에디터는 Minecraft(마인크래프트) 이후로도 대규모 월드, 실시간 편집, 파괴 및 생성 등에서 높은 퍼포먼스와 효율적인 메모리 관리가 필수적인 분야로 자리잡았습니다. 특히 최근 상용화된 Voxel 게임들은 Unity Engine 6의 최신 기능과 다양한 최적화 기법을 결합하여 고품질의 실시간 렌더링과 대규모 월드 구현을 실현하고 있습니다. 본 리포트에서는 Greedy Meshing(그리디 메싱) 기법의 이론과 처리 구조, 사용 이유와 실제..

UNITY3D 2025.09.27

[번역]UE에서의 다단계 자동화 자산 검사 솔루션

대규모 프로젝트에서는 자산의 규모가 매우 방대하고, 제작 팀도 매우 광범위하게 관여합니다. 씬, 캐릭터, UI, 애니메이션, 특수 효과, 블루프린트, 데이터 테이블 등 다양한 요소가 있으며, 이로 인해 자산의 양과 자산 표준 관리가 어려워집니다.자산 규격을 정해도 아티스트가 100% 모든 상황을 커버하기 어렵고, 실수로 놓치는 경우가 있습니다. 대부분의 경우 패키지 내에서 문제를 발견한 후에야 처리하게 되며, 기존 자산의 경우 검토와 수정에 많은 인력이 소요됩니다.이러한 문제점을 바탕으로, 저는 이전에 자산 스캔 도구를 개발했습니다. 이 도구는 프로젝트 내 자산을 스캔하기 위한 규칙을 쉽게 편집할 수 있습니다.UE에서 리플렉션을 활용한 자산 속성 캐시 구축UE에서 자산 자동 수정 설계 및 구현 방안UE에..

TECH.ART.FLOW.IO 2025.09.17

[번역]UE Plugin and Tool Development: Commandlet

텐센트 라이트스피드 스튜디오에서 개발 관련 하여 엔지니어로 일 하고 있는 "查利鹏" 엔지니어 블로그 발췌 토픽을 번역 했습니다.언리얼 엔진으로 도구를 개발할 때, 자산 처리와 데이터 내보내기가 필요한 경우가 상당히 많습니다. 이러한 작업은 자주 자동화하여 실행해야 하므로 보통 CI/CD 시스템에 통합합니다.구체적인 구현에서는 UE의 Commandlet 메커니즘을 활용하여 명령줄 형식으로 엔진을 구동하고, 사용자 정의 동작을 실행합니다.제가 개발한 플러그인에서 지원하는 Commandlet 기능을 예로 들면:HotPatcher: 기본 패키지 정보 내보내기, 패치 패키징ResScannerUE: 변경된 자산의 증분 스캔HotChunker: 독립적인 청크 패키징libZSTD: 셰이더 사전 학습ExportNavMe..

TECH.ART.FLOW.IO 2025.09.15

Unity 6.2.1 HDRP vs URP 셰이더 코드 비교 연구

연구 목적: Unity 6.2.1 이상 버전에서 HDRP(High Definition Render Pipeline)와 URP(Universal Render Pipeline)의 셰이더 코드 작성 시 API 차이점, 문법 차이점, Include 구조 차이점을 체계적으로 분석하고 정리연구 범위: Unity 6.2.1+ 버전 기준 셰이더 코드 작성 가이드라인1. 개요 및 파이프라인 호환성1.1 기본 호환성 정보HDRP와 URP로 작성된 프로젝트는 상호 호환되지 않으며, Built-in Render Pipeline과도 호환되지 않습니다.개발 시작 전 렌더 파이프라인을 결정해야 하며, 파이프라인 간 전환은 매우 큰 비용이 발생합니다.1.2 셰이더 코드 호환성Surface Shader 지원 없음: 두 파이프라인 모두..

UNITY3D 2025.09.07

브랜치 프리 셰이더: 원-핫 마스크로 버텍스 컬러 채널 추출하기

분기 코드는 런타임 분기(동적 분기)로 인해 파이프라인에 따라 비용이 커질 수 있습니다.프러퍼티. [Enum(R,0,G,1,B,2,A,3)]_OutlineVertexColorChannel("Outline Vertex Color Channel", Float) = 0 float outlinceVertexColorMask = 0.0;if (_OutlineVertexColorChannel == 0) outlinceVertexColorMask = vertexColor.r;else if (_OutlineVertexColorChannel == 1) outlinceVertexColorMask = vertexColor.g;else if (_OutlineVertexColorChannel == 2) out..

MagicaCloth2 Dynamic Optimizer

최근 매지카클로스 개발자랑 커뮤니케이션도 해 보고 ... 고객사 요구에 맞게 성능평가와 최적화 가이드라인도 만들려면 정량화 된 데이터가 기반이 되야 해서 평가툴 개발. 매지카클로스 API 를 보면 이 일본인 친구들이 얼만큼 정성을 담아 만들었는지 알 수가 있다. LOD0 번으로 테스트 하고 기준 데이터를 뽑으니 고객사 분과 대화 하기가 훨씬 편했음. 매지카클로스2 기반 API 를 사용해서 최적화 모듈을 만들었고 역시나 거리에 따라 시뮬레이션 프리퀀시와 업데이트 빈도를 셋업 해 줄 수 있게 했다. LOD2번은 메시 프록시 클로스를 사용하는 것이 이득으로 보인다. 본 업데이트와 GPU 스킨 업데이트도 꽤 낭비기 때문에 멀리 본 데이터는 메시 프록시 클로스가 이득일 수 있다. 이건 고객사분도 그럴것 같다고 하..

UNITY3D 2025.07.22