TECHARTNOMAD | TECHARTFLOWIO.COM

분류 전체보기 479

!! 연산자

const bool bFoliageDiscardOnLoad = !!CVarFoliageDiscardDataOnLoad.GetValueOnGameThread();위 코드에서 !! 연산자가 있다는 걸 알 수 있죠.이걸 리펙토링 하면.const bool bShouldDiscardFoliageDataOnLoad = CVarFoliageDiscardDataOnLoad.GetValueOnGameThread() != 0;이것과 같습니다.변수 이름 변경 (Renaming): bFoliageDiscardOnLoad를 bShouldDiscardFoliageDataOnLoad로 변경하여 변수의 역할을 더 잘 표현.문법 단순화: !! 연산자를 제거하고 GetValueOnGameThread() 메서드가 반환하는 값을 명시적으로..

UNREAL ENGINE 2025.02.19

모바일 스킨 셰이더 개발 시 참고 사항. 2019 버전.

6년 전 쯤? 모바일 프로젝트 때문에 개발하던 셰이더와 관련 해서 중국어로 작성 해 놨던 페이지가 보여 다시 한국어로 전환 해서 블로그에 올려봅니다.핵심 요약목적본 문서는 OpenGL 3.2 이상을 지원하는 기기에서 스킨 셰이더를 구현하기 위한 기술적 고려사항을 설명.범위듀얼 로브 스킨.방법론What is the dual lobe specular?듀얼 로브 스페큘러(dual lobe specular) 기술은 두 개의 독립적인 정반사 거칠기 값을 사용하여 최종 렌더링 효과를 처리합니다. 이 방식은 고품질의 서브픽셀 디테일을 통합하여 피부의 미세 특성을 정밀하게 시뮬레이션함으로써 더욱 사실적인 시각적 표현을 구현합니다. 사실 이 부분은 2013년부터 사용되어 널리 알려져 있었으며, 다만 Epic Games..

UNITY3D 2025.02.18

Quickstart: Folder Merge

여러 파일이 들어있는 프로젝트 폴더를 상상해보세요. 이 폴더로 이틀 동안 작업하면서 두 개의 다른 Git 브랜치에 저장했다고 가정해보세요. 또는 폴더를 만들어 두 명의 팀원과 공유하고 그들이 개선을 도왔던 팀 시나리오를 떠올려보세요.이렇게 하면 세 가지 버전이 생성됩니다: 원본 폴더(조상)와 두 개의 새로운 폴더입니다. 이들을 통합해야 합니다. Beyond Compare에서는 이 과정을 폴더 병합 세션이라고 합니다. 이 예제에서 사용된 파일을 다운로드하려면 다음 링크에서 마우스 오른쪽 버튼을 클릭하고 "다른 이름으로 저장"을 선택하세요: 17KBtest-merge-for-three-folders-A-Z.ziparchive프로젝트 폴더에 설정된 26개의 빈 파일은 다음과 같습니다:Here are the m..

TECH.ART.FLOW.IO 2025.02.17

World Partition-> Runtime Partition

UE5의 새로운 레벨 분할 기술은 런타임에서 그 장점이 두드러집니다.레벨의 정적 오브젝트들은 레벨 시작 시 단 한 번만 계산되어 메모리에 저장되므로, 이전의 Bake 방식과 비교해도 게임 실행 중 성능 부담이 발생하지 않습니다.또한 에디터(Editor)에서 오브젝트와 스트리밍 레벨 간의 관계(진입/이탈)를 일일이 처리할 필요가 없어져 오픈 월드 씬 편집이 한결 수월해졌습니다.관련 설정World Partition SetupRuntime Hash ClassWorldPartitionRuntimeHashSet와 WorldPartitionRuntimeSpatialHash는 언리얼 엔진의 World Partition 시스템에서 사용되는 두 가지 런타임 해싱 전략입니다. 각각의 차이점을 살펴보겠습니다.1. World..

UNREAL ENGINE 2025.02.17

[TIP] 유니티 6. 하나의 서브메시에 다중 머티리얼 적용하는 법.

유니티 6 는 이 전 버전에 비해 GPU Driven 친화적으로 진화하고 있다.기본적인 설정은 GPU 상주드로어등이 꺼져 있겠지만 HIZB 등을 사용하거나 좀 더 고도화 된 유니티 6 렌더패스와 GPU 최적화를 활용하기 위해서는 켜 주는 것이 보통일 것이다.다만 이 전에 우리가 자주 사용했던 단일 서브메시에 2개 이상의 멀티머티리얼을 적용 할 경우 렌더링 처리 되지 않음으로 유니티에서 GPU Driven 관련 콤포넌트를 만들어 놓았다.간단히 예로 들면...주로 알파테스트와 알파블렌드 두 개의 페스를 머티리얼로 처리 하는 경우가 많은 상황에서 이렇게 Hair 객체에 스크립트 콤포넌트를 추가 할 수 있다.유니티에서 제공하고 있ㅎ는 Disallow GPU Driven Rendering 콤포넌트를 적용 해 주면..

유니티 6.2 렌더링 패스

유니티 포럼에서 유니티 엔지니어의 말. Forward투명 및 불투명 오브젝트를 한 번에 하나씩 렌더링합니다. 각 오브젝트에 대해 영향을 미치는 광원 목록을 바인딩. GPU에서는 이 목록을 반복하며 조명을 누적.이 방식의 장점은 매우 단순하고 CPU 비용이 낮다는 것입니다. 매우 단순한 장면에서는 이 방식이 유리.단점은오버드로우, 즉 나중에 다른 지오메트리에 의해 가려질 픽셀의 조명 처리에 비용이 발생.광원 수가 제한적.GPU 기반 렌더링 및 GPU 오클루전 컬링과 호환되지 않음.Forward+CPU에서 Burst를 사용하여 모든 가시 광원과 반사 프로브를 스크린 스페이스 클러스터로 정렬. 각 스크린 스페이스 클러스터에 대한 광원 목록이 생성되면 이를 GPU로 업로드한다. 투명 및 불투명 오브젝트를 이제 ..

UNITY3D 2025.02.10

9.8.5 Screen Space Depth 기반 Rim light 따라잡기 도입글 소개

9.8.5 Screen Space Depth 기반 Rim light 따라잡기게임 그래픽이나 3D 애니메이션 분야에서는 물체의 가장자리를 빛으로 감싸 윤곽선을 돋보이게 만드는 ‘Rim Lighting’ 기법이 자주 사용된다. 간단히 설명하면, 데브 기반 림라이팅이란 물체와 주변 사이의 깊이 차이를 활용해 물체의 에지(가장자리)에만 빛이 닿는 효과를 연출하는 것이다. 이번 장에서는 이러한 림라이팅을 구현할 수 있는 방법에 대해 살펴보려 한다.림라이팅이 게임 업계에서 본격적으로 사용되기 시작한 시점은 대략 2003년 무렵으로 추정된다(정확한 연도는 명확하지 않다). DirectX 9.0 기반에서 개발이 활발해지던 시기부터, 게임브리오 엔진이나 언리얼 엔진 2.X 등을 사용하던 시대를 거쳐, 현재의 다양한 모바..

Scene Templates 좀 알아보자.

저녁 시간에는 주로 유니티로 MMO 를 개발하는 회사를 컨설팅 하고 있는 터라 스트리밍 터레인 예제를 제작해야 하는데 뭐 문서 보다가 씬템플릿이 있길레 뭔가 하고 해서 유니티 문서 기반으로 정리 해 본것이다.Scene Templates새로운 씬을 만들기 위해 Unity는 Scene Template(시작하고자 하는 모든 콘텐츠가 포함된 사전 구성된 씬)을 복사한다. 예를 들어, 기본 템플릿에는 카메라와 라이트가 포함되어 있다.프로젝트에서 사용 가능한 새로운 씬의 유형을 정의하기 위해 사용자 정의 Scene Template을 만들 수 있다. 예를 들어, 서로 다른 게임 레벨에 대한 템플릿을 만들어 팀원들이 올바른 에셋과 구성으로 씬을 시작할 수 있도록 할 수 있다.모든 Unity 씬은 Scene Templa..

UNITY3D 2025.02.05