2011-01-17 4 views
1

변위 맵의 장점은 무엇입니까? 실제로 더 높은 개수의 폴리곤을 렌더링하는 속도가 빨라지습니까? 아티스트와 엔진 내 도구가 폴리 수를 일시적으로 낮추는 것은 멋진 트릭입니까? 내가 볼 수있는 유일한 사실은 어쩌면 세부 알고리즘 수준 일 수도 있지만 훨씬 더 먼 거리에서도 가능합니다.변위 매핑

답변

3

잘 폴리 폴리 모델을 렌더링하기 위해보다 컴팩트 한 구조를 제공 할 수 있습니다. 위치 변경 맵은 픽셀 당 1 바이트를 포함 할 수 있습니다. 디스플레이 스먼트 매핑을 위해이를 테셀레이션하면 GPU에 엄청난 양의 메모리 대역폭을 절약 할 수 있습니다.

이미지는 간단한 버텍스 구조체입니다.

struct Vert 
{ 
    float x, y, z; 
    float nx, ny, nz; 
    float u, v; 
}; 

구조체의 크기는 32 바이트입니다. 그래서 당신이 정점의 수를 4 분의 1로 할 수 있다고 상상한다면 (그리고 그것보다 훨씬 많은 지옥을 수행 할 수 있어야합니다), 다른 모든 정점을 1 바이트 높이 맵으로 대체하면 사용 된 메모리의 양이 줄어 듭니다. 다음과 같이

100,000 poly object = 3,200,000 bytes using vertex struct alone. 
25,000 polys + 100,000 entry height map = 900,000 bytes. 

즉 dispalcement 매핑 메모리의 28 %에서 동일한 데이터를 제공합니다. 승리! : D

노멀 맵을 저장하고 높이에 w/a 구성 요소를 사용하면 텍스처에 대해 400000 바이트를 사용하고 크기가 여전히 37.5 % 인 1,200,000 바이트가됩니다. PLUS를 사용하면 보통 저장을 위해 12 바이트를 제거 할 수 있으며 실제로 900,000 바이트의 동일한 수치로 떨어집니다.

당신은 그보다 훨씬 높은 지오메트리 압축률을 얻을 수 있어야합니다. 요약하면, 스토리지 데이터의 일부에 대해 더 나은 모델을 얻을 수 있습니다.

일반지도/높이지도 시스템을 사용하면 쉽게 확장 할 수 있으므로 덜 강력한 기계가 일반 데이터를 단순히 사용하므로 여전히 좋은 결과를 얻을 수 있습니다.

+0

감사! 전에는 그렇게 생각하지 않았습니다. 또한 버스에서 모든 버텍스 데이터를 전송하는 대신 텍스처를 읽고 gpu에서 생성한다고 가정 할 때 속도가 조금 더 빠르다고 가정하는 것은 잘못입니까? O.o – sringer

+1

@sringer : 전적으로 귀하의 한계가 어디에서 일어나고 있는지에 달려 있습니다. CPU가 제한적이라면 GPU의 속도는 분명히 달라질 것입니다. 마찬가지로 셰이더가 제한적이라면 변위 매핑이 문제를 악화시킬 수 있습니다. 반면에 메모리 대역폭이 제한적이라면 큰 차이를 만들 수 있습니다. 언제나 그렇듯이 프로파일을 통해 "최적화"가 실제로 어떤 영향을 미치는지 알 수 있습니다. – Goz