반응형

 

 

 

 

오클루전 컬링

- 오클루전 컬링은 어떤 게임 오브젝트가 다른 게임오브젝트에 의해 카메라 뷰에서 완전히 가려진 게임 오브젝트에 대한 렌더링 계산을 수행하지 못하도록 하는 프로세스이다.

- 기본적으로 카메라 컴포넌트에 있는 Clipping planes의 값을 설정해 절두체 컬링을 할 수 있지만 절두체 컬링은 렌더러가 다른 게임 오브젝트에 가려져있는지 확인하지 않으므로 유니티에서 최종 프레임에 표시되지 않는 렌더러에 대한 렌더링 작업에 CPU 및 GPU 시간을 낭비할 수 있기때문에 오클루전 컬링으로 이러한 낭비를 방지한다.

 

 

 

오클루전 컬링의 작동 방식

- 유니티에서 씬에 대한 데이터를 생헝한 후 런타임 시점에서 해당 데이터를 사용하여 카메라가 볼 수 있는 요소를 결정한다. (베이크)

- 오클루전 컬링 데이터를 베이크하면 유니티는 씬을 셀로 나누고 셀 내 지오메트리와 인접 셀 간의 가시성을 설명하는 데이터를 생성한 뒤, 생성된 데이터의 크기를 줄이기 위해 가능한 경우 셀을 병합한다.

- 런타임 시점에서 유니티가 베이크된 데이터를 메모리에 로드하고, 오클루전 컬링 프로퍼티가 활성화된 각 카메라에 대해 해당 데이터에 대한 쿼리를 수행하여 카메라가 볼 수 있는 요소를 결정한다.

- 오클루전 컬링이 활성화 되면 카메라는 절두체 컬링과 오클루전 컬리을 둘 다 수행하게 된다.

 

 

 

오클루전 컬링 사용 시기

- 낭비되는 렌더링 작업을 방지하게 되면 CPU 및 GPU 시간 모두 절약할 수 있다.

- 유니티의 빌트인 오클루전 컬링은 CPU에서 런타임 계산을 수행하므로 절약되는 CPU 시간을 오프셋할 수 있다. 따라서 오클루전 컬링을 사용하면 오버드로우로 인해 프로젝트가 GPU 바운드일 떄 성능이 향상될 가능성이 매우 높다.

- 오클루전 컬링 데이터는 런타임 시점에서 메모리에 로드되므로 디바이스에 해당 데이터를 로드할 만큼 충분한 메모리가 있는지 확인해야한다.

- 오클루전 컬링은 작고 윤곽이 또렷한 영역이 견고한 게임 오브젝트에 의해 서로 명확하게 분리된 씬에서 잘 작동한다. (복도로 연결된 방을 예로 들 수 있다.)

- 오클루전 컬링을 사용하여 동적 게임 오브젝트를 가릴 수 있지만, 동적 게임 오브젝트는 다른 게임 오브젝트를 가릴 수 없다. 프로젝트가 런타임에 씬 지오메트리를 생성하는 경우에는 해당 기능이 프로젝트에 적합하지 않다.

 

 

 

오클루더(Occluder), 오클루디(Occludee), 동적 오클루전(Dynamic occlusion)

- 오클루더(Occluder) : 다른 렌더러를 가리는 게임오브젝트 (정적 게임 오브젝트)

- 오클루디(Occludee) : 다른 게임오브젝트에 의해 가려지는 렌더러 (정적 게임 오브젝트)

- 동적 오클루전(Dynamic occlusion) : 동적 게임 오브젝트인 경우 오클루더에 의해 컬링 되려면 렌더러에서 해당 플래그를 활성화 시켜야한다.

※※ 동적 게임 오브젝트의 경우, 오클루전 컬링 데이터에 베이크할 수 없다. 그렇기 때문에 동적 오클루전 플래그를 활성화하여 오클루더가 해당 렌더러를 가릴 때 컬링할 수 있도록 해준다.

※※ 동적 게임 오브젝트는 오클루디일 수는 있지만 오클루더일 수는 없다.

 

 

 

 

추가 문서

 

오클루전 컬링 - Unity 매뉴얼

오클루전 컬링은 Unity가 다른 게임 오브젝트에 의해 뷰에서 완전히 가려진(오클루전된) 게임 오브젝트에 대한 렌더링 계산을 수행하지 못하도록 하는 프로세스입니다.

docs.unity3d.com

 

 

[유니티] 오클루전 컬링 - 설정

기본 개념은 다음 글에서 참고 [유니티] 오클루전 컬링 - 기본 개념 오클루전 컬링 - 오클루전 컬링은 어떤 게임 오브젝트가 다른 게임오브젝트에 의해 카메라 뷰에서 완전히 가려진 게임 오브젝

srdeveloper.tistory.com

 

 

 

 

반응형
반응형

 

 

 

 

 

 

 

 

파티클 옵션

 

 

 

 

참고 사이트

- UnitychanKAGURA

 

ユニティちゃんKAGURA(URP) - ダウンロード - UNITY-CHAN! OFFICIAL WEBSITE

2018年末のイベントに登場した和装のユニティちゃんです。Unite In The Skyのリミックス曲と振り袖にあわせた新たなダンス、和風のステージデータも同梱されています。 Unity2019.4.16f1, Universal Ren

unity-chan.com

 

 

 

 

 

반응형
반응형

 

 

 

 

그래픽스 파이프라인

- 3차원 컴퓨터 그래픽스에서 그래픽스(또는 렌더링) 파이프라인은 3차원 이미지를 2차원 래스터 이미지로 표현하기 위한 단계적 방법을 말한다.

- 위 다이어그램은 DX3D 11에서의 파이프라인이며 입력에서 출력으로의 데이터 흐름을 보여준다.

- 다이어그램에서 직사각형 단계는 하드웨어 처리이기 때문에 프로그래밍이 불가능하고, 둥근 블록의 단계는 HLSL(High Level Shader Language)을 사용하여 프로그래밍이 가능하다.

- 보통 쉐이더 프로그래밍이라 말할 때는 '버텍스 쉐이더'와 '프래그먼트(픽셀) 쉐이더'를 제어하는 코드를 작성하는 것을 가리킨다.

- Input-Assembler(입력 조립) Stage : GPU가 CPU부터 정점 데이터를 받아 프리미티브들을 만든다.

- Vertex Shader(정점 쉐이더) Stage : 정점들의 공간 변환을 수행한다.

- Rasterizer(래스터라이저) Stage : 정점 데이터들을 기반으로 보간된 프래그먼트(픽셀)를 생성한다.

- Pixel Shader(픽셀 쉐이더) Stage : 프래그먼트를 받아 화면에 그려질 픽셀들의 색과 깊이 값을 출력한다.

- Output-Merger(출력 병합) Stage : Z 테스트, 스텐실 테스트, 알파 블렌딩을 통해 최종적으로 화면에 그려질 색상을 결정한다.

※※※ 프리미티브 : 가장 원시적인 단위를 뜻하는 것으로 여기서는 삼각형을 뜻한다.

 

 

 

- 다이어그램을 조금 더 세부적으로 표현하면 다음과 같다.

 

  • 로컬 스페이스

- 모델링 스페이스라고도 하며, 모델링 과정을 월드에 직접 구성하는 것보다 쉽기 떄문에 로컬 좌표 시스템을 이용하여 모델링을 쉽고 단순하게 만들어준다.

- 로컬 스페이스에서는 위치, 크기와 월드 내에서의 다른 물체와의 관계를 고려하지 않고 구성이 가능하다.

  • 월드 스페이스

- 로컬 좌표 시스템 내에 다수의 모델을 구성한 다음, 이들을 월드 좌표로 옮겨 하나의 장면을 구성한다.

- 행렬을 이용해 로컬 스페이스의 물체들을 위치, 회전, 크기의 변경작업을 수행하게 된다.

  • 뷰 스페이스

- 월드 좌표에서 카메 중심으로 좌표변환을 한다.

- 카메라를 월드 내의 임의의 위치나 방위를 가지면 투영 및 그 밖의 작업이 어렵다.

- 그래서 카메라를 월드의 원점으로 변경하고 양의 Z축을 보도록 한다.

  • 컬링(후면 추려내기)

- 카메라에 대해 뒤집혀있는(뒷면)의 프리미티브 처리를 건너뛰는 작업이다.

- GPU가 고속화 되더라도 모든 면을 연산하기에는 GPU에 부담이 되므로 렌더링 축소는 항상 해야된다.

  • 조명

- 물체에 명암을 주어 사실감을 더해준다.

- 조명은 정반사광(Specular), 난반사광(Diffuse), 환경광(Ambient)등이 있다.

- 광원은 방향성 광권(Directional light), 점 광원(Point light), 점적 광원(Spot light)이 있다.

  • 클리핑

- 시야 볼륨 외부의 기하물체를 추려내는 과정이다. (절두체 컬링)

- 절두체 : 투영행렬을 계산할 때 범위의 모양이 삼각뿔의 머리를 잘라둔 것처럼 생겨서 절두체라고 한다.

- 완전한 내부 : 폴리곤이 완전히 절두체 내부에 위치하면 그대로 보존

- 완전한 외부 : 폴리곤이 완전히 절두체 외부에 위치하면 추려낸다.

- 부분적 내부 : 폴리곤이 부분적으로 절두체 내부에 위치하면 폴리곤은 두 부분으로 나누어 내부에 위치한 부분은 보존하고 나머지는 추려낸다.

  • 투영

- 3D를 2D로 표현 (N차원에서 N-1 차원을 얻는 과정)

- 원근 투영(Perspective projection)을 사용하여 2차원의 화면을 얻는다.

  • 뷰포트

- 화면에 표시되는 영역

- 윈도우의 뷰포트라 불리는 화면의 직사각형으로 변환하는 과정

- 투영된 이미지를 모니터에 표시할 수 있는 크기로 다시 변환

  • 래스터라이즈

- 각각의 폴리곤을 그리는데 필요한 픽셀 컬러를 계산 (각 정점 좌표로 부터 선형 보간에 따라 생성된다.)

- 픽셀 하나하나를 계산하는 작업을 하기에 엄청난 양의 연산처리가 필요하므로 전용 그래픽 하드웨어에서 처리되어야한다.

 

 

 

 

 

반응형

+ Recent posts