화면의 일부만 상세하게 렌더링


11

큰 시야각 (예 : 매우 큰 TV 또는 VR 헤드셋)에 대해 그래픽을 렌더링하는 경우 뷰어는 실제로 전체 이미지에 집중할 수 없으며 그 일부만 할 수 있습니다. (실제로 일반 화면의 경우도 마찬가지입니다.)

시청자의 눈을 추적하는 방법과 결합하면 (주로 VR에서 가장 가능성이있는 것으로 생각됨) 이론적으로이를 활용하여 세부적인 정보와 해상도를 점차적으로 낮춰 시청자의 초점에서 멀어지게 할 수 있습니다.

현재 사용 가능하거나 개발중인 기술이 있습니까?


흥미로운 아이디어이지만 대부분의 디스플레이에는 눈 추적기가 제공되지 않기 때문에 실행 불가능한 것 같습니다. 또한 안구 운동 속도로 지오메트리를 전환하면 성능에 부정적인 영향을 줄 수 있다고 생각합니다. 물론 당신은 / 관심의 특정 지점에서보기 플레이어를 장려하는 방식으로 장면을 수준을 설계하고 환경에 대한 낮은 품질의 자산을 사용하는 동안 ... 안녕하세요 - 자세한 메시를 제공 할 수
bummzack

1
이 Siggraph 2014 논문 ( graphics.cs.cmu.edu/projects/multirate)을 확인하십시오 . 읽을 시간이 없었지만 "픽셀 당 1x 조각 셰이더"미만으로 이미지를 음영 처리하고 여전히 합리적인 이미지를 얻는 방법을 설명합니다. 아마도 알고리즘이나 아이디어의 개요가 화면 가장자리의 샘플링 속도를 줄이고 성능을 향상시키는 데 사용될 수 있습니다.
TravisG


이것은 이제 Foveated Rendering이라고하는 것입니다. roadtovr.com/…
Bart van Heukelom

답변:


7

많은 게임에서 이러한 효과에 대해 이야기하고 있습니다. 먼저, Depth of field 가 있는데,이 예제 에서처럼 카메라가 근접한 물체에만 초점을 맞추는 것처럼 먼 거리의 물체가 흐릿하게 보입니다. DirectX SDK 패키지에서 이와 관련된 더 많은 샘플을 탐색 할 수 있습니다. 샘플 코드도 있습니다. OpenGL의 경우 검색하면 인터넷에서 얻을 수 있습니다.

여기에 이미지 설명을 입력하십시오

두 번째로보고 싶은 것은 이름에서 알 수 있듯이 텍스처 밉 매핑과 비슷하지만 지오메트리에 대한 Geometry MipMaping 또는 Progressive Mesh 로 알려져 있습니다. 객체가 카메라에서 멀어 질수록 메시의 다각형 수가 줄어 듭니다. 이것은 성능 향상에 도움이됩니다. D3D에는 프로그레시브 메시를 자동으로 생성하는 데 도움이되는 기능이 있습니다. 여기있어:

HRESULT WINAPI D3DXGeneratePMesh(
                                  LPD3DXMESH pMesh,
                                  const DWORD *pAdjacency,
                                 const D3DXATTRIBUTEWEIGHTS *pVertexAttributeWeights,             
                                  const FLOAT *pVertexWeights,
                                  DWORD MinValue,
                                  DWORD Options,
                                  LPD3DXPMESH *ppPMesh
                                 );

이에 대한 예는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

편집 : 다음 이미지를 고려하십시오 여기에 이미지 설명을 입력하십시오

이것은 카메라의 컬링 절두체입니다. 가운데를 통과하는 선은 LookAt 벡터입니다. 이제 플레이어가 항상 화면 중앙에 초점을 맞추기를 원한다고 가정하면 각도 x를 정의합니다. 결정된 x보다 많은 각도에 배치되는 모든 객체는 저해상도 렌더링을 가지며 각도 내에있는 객체는 상세하게 렌더링됩니다. 이와 같이 화면 중앙에있는 객체는 측면에있는 객체보다 더 자세합니다. 플레이어가 중앙을보고 있지 않으면 중앙 라인을 플레이어가보고있는 방향으로 조정하십시오. (또는 전체 카메라를 해당 방향으로 회전)


dof를 구현하여 성능을 얻을 수 있을지는 의문입니다.
badweasel

@badweasel 글쎄, 그건 사실이야. DOF는 성능을 향상시키지 않지만 언급 할만한 가치가 있습니다. 그것은 때때로 먼 거리에서 튀어 나올 수있는 상세하고 뭉친 지오메트리를 숨길 수있게합니다.
라이트 스파크

나는 당신의 대답을 찬성했습니다. 좋은 대답입니다. 나는 그것이 그의 질문의 일부이기 때문에 그것을 지적하고 싶었습니다.
badweasel

이러한 기술은 카메라에서 z 거리를 사용하지만 사용자가보고있는 화면의 지점에서 x / y 거리를 의미합니다. 나는 그들이 그렇게 적응 될 수 있다고 생각합니다.
Bart van Heukelom

1
@BartvanHeukelom 왜 플레이어가 중앙에 초점을 맞추지 않으면 카메라를 돌려 중앙에 초점을 맞 춥니 다. 재미 있겠다.
라이트 스파크

2

예. Foveated Rendering 은 눈 추적 기능을 사용하여 사용자 가보고 있는 것을 매우 상세하게 렌더링합니다. 다른 모든 것은 더 자세하게 렌더링 될 수 있습니다.

여기에 이미지 설명을 입력하십시오

이와 같은 스크린 샷을 볼 때 상당히 분명하지만 VR에서는 사용자에게 보이지 않습니다.

기존 주류 헤드셋에는 시선 추적 기능이 포함되어 있지 않지만 시선 추적 기능을 추가 할 수있는 몇 가지 애프터 마켓 솔루션이 있습니다. 또한 렌더링 프로세스에는 소량의 추가 처리가 필요합니다. 그러나 이점은 상당합니다. Foveated 렌더링을 구현하면 적은 비율의 FOV 만 매우 자세하게 렌더링하면 프레임 속도가 크게 높아질 수 있습니다. 정확한 숫자는 구현에 따라 다릅니다.

또한 이것은 VR 헤드셋에만 국한되지 않습니다. 데스크탑 모니터에서도 사용할 수 있습니다 (시선 추적 기능이 추가되고 효과가 제한됨).


1

Byte56의 답변을 확장하면 예, 이런 종류의 일이 업계에서 개발되고 있습니다. Fixed Foveated Rendering은 Valve의 로봇 수리 데모 ( https://youtu.be/DdL3WC_oBO4?t=769 )와 몇 가지 상용 게임 (PSVR의 Resident Evil VII 가 떠오름)에서 채택 된 기술 입니다. 고정 Foveated 렌더링은 시선 추적을 사용하지 않지만 현재 시선 추적 기능이없는 현재 버전의 VR 헤드셋과 잘 작동합니다. 현재 Vive는 시선 추적 업그레이드 키트를 구입해야하기 때문에 일부 AAA VR 타이틀이이를 활용할 수 있습니다.

이런 종류의 것과 관련하여 사용 가능한 많은 코드 샘플을 찾을 수는 없지만 Nvidia에는 ​​문서화 된 하드웨어 확장이 있습니다. 다중 해상도는 상당히 잘 설명되어 있지만 하드웨어와 관련된 기능입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.