2010-08-02 4 views
0

단일 패스 (또는 클라이언트 코드를 통해 여러 번 그리는 것보다 빠르게)에서 여러 렌더 대상에 장면을 렌더링 할 수 있는지 궁금합니다. 다양한 치수 (512 x 512, 256 x 256, 128 x 128, 64 x 64 등)의 여러 텍스처로 렌더링되는 일부 코드를 최적화하고 싶습니다.Xna를 사용하여 한 번에 여러 장면으로 장면을 렌더링 할 수 있습니까?

원래 대상에서 파생 된 밉맵을 사용할 수 있다는 것을 알고 있지만 색상을 혼합하고 싶지는 않습니다. 나는 밉 매핑 (mip mapping)이 몇 텍셀에서 평균을 얻는다고 생각하지만, 제 목적을 위해서 그래픽 카드로 렌더링 된 그대로의 렌더링을 원합니다. 이것을 허용하는 밉맵에 대한 설정이 있다면 실행 가능한 솔루션으로도 상당히 중요합니다.

메모에 CPU 또는 GPU에서 밉맵이 생성되는지 아는 사람이 있습니까?

읽어 주셔서 감사합니다.

답변

1

질문에 대한 해결책이 없습니다. MRT는 다른 해상도에서는 작동하지 않습니다. 밉맵 (Mipmaping)은 원본과 거의 같은 작은 텍스처를 생성 할 수 없습니다. 실제로 AFAIK를 수행 할 수있는 방법은 없습니다. 새로운 그래픽 카드를 사용하면 밉맵이 GPU에서 생성됩니다. 한 가지 질문 : 왜 사각형 타겟으로 렌더링하고 있습니까?

+0

광장 목표는 예를했다, 나는 다른 차원을한다고 설명에만 의미했다. 사실, 제 경우에는 각 텍스처가 전임자의 절반 크기가되기를 원합니다. 전임자는 너비와 높이를 가질 수 있어야합니다. – Statement

0

Quang Anh이 말했듯이 - 당신이 원하는 것을 정확히 할 방법이 없습니다. 그럼 실제로 달성하려는 것은 무엇입니까?

밉맵을 축소 할 때 발생하는 혼합이 염려되는 경우 렌더링 대상을 가져 와서 point sampling을 사용하여 다른 렌더링 대상에 렌더링 ("전체 화면"쿼드)할까요? 무슨 일을하는 것은 (깊이 유사 또는 데이터) 깊이 관련된 경우

, 당신은 최대를 알아야합니다 (또는 :


추가 다음과 같은 의견 (. 그리고 당신이 원하는 각각의 크기가를 반복) 최소 픽셀 수를 지정하면 이미지의 해상도가 반으로 줄어 듭니다.

하나의 렌더 타겟을 포인트 샘플링으로 렌더링함으로써 동일한 스케일링 기술을 사용할 수 있습니다 (위의 원래 대답에서 설명한대로).). 그리고 픽셀 쉐이더에서 출력 이미지의 한 픽셀이 될 4 개의 픽셀을 샘플링합니다. 네 개에서 최대 (또는 최소) 값 픽셀을 선택하여 출력합니다.

는 (나는 연습으로 줄 지어 샘플을 얻을하는 데 필요한 수학을 떠날 것입니다.)

+0

컬링 데이터를 생성하기 위해 프리미티브를 사용하여 최적화하는 이론적 인 개념을 발견했습니다. 텍스처 색상 값은 데이터를 나타내며, 래스터 라이저의 출력을 유지하면서 다양한 컬링 데이터를 다양한 크기로 래스터 화하려고합니다. 즉, 2x2 텍스처를 1x1 텍스처로 스케일 다운하면 2x2에 텍스처가 포함 된 경우 1x1 텍스처가 데이터로 설정되어야합니다. 이것은 밉맵이 섞이는 문제이므로 밉맵이 문제가되는 곳입니다. 이 작업을하려면 색이 혼합되어서는 안됩니다. 그것들은 1by 1 텍스처로 렌더링 된 것처럼 반환되어야합니다. – Statement

+0

이것은 2x2 및 1x1뿐만 아니라 모든 가변 크기 텍스처에 적용되어야합니다 (따라서 512x512 및 256x256의 예제). 그런 다음 텍스처 크기와 관련하여 프레임을 여러 번 렌더링하는 것이 해결책이라고 생각합니다. – Statement

+0

@Statement : 기본적으로 픽셀 정확한 결과를 얻으려면 장면을 여러 번 렌더링해야합니다.포인트 샘플링을 사용하면 원본 이미지가 아닌 중간 값을 가져올 수 없지만 결과가 래스터 라이저가 출력 할 픽셀 정확성이 반드시 필요한 것은 아닙니다 ... 이제 말합니다 - 기술이 깊이를 기반으로한다면 또는 값이 너무 크거나 너무 작은 값이 여전히 괜찮은 다른 값)을 선택하면 내 기술을 적용 할 수 있습니다. 내 대답에 대한 추가 내용을 참조하십시오. –

관련 문제