필자는 단순히 필터 처리 만하지 않고 거기에서 계산을하기 때문에 계산 쉐이더를 사용하여 밉맵을 수동으로 생성하고 있습니다.계산 쉐이더로 밉맵 계산하기, 완료 했습니까?
스트롱 워크 방식은 레벨 1의 텍셀 당 레벨 0에서 4 개의 해당 텍셀을 읽고 필터링 한 다음 텍셀을 작성하는 것입니다. 그것을 전체 레벨에 대해 수행 한 다음 다음 레벨에 대해 반복하십시오.
그러나 레벨 0을 읽고 레벨 1을 작성한 다음 레벨 1을 다시 읽는 대신 레벨 2 등을 작성하는 것이 더 빠릅니다. 레벨 0의 타일을 읽은 다음 동일한 디스패치 호출에서 다음 몇 레벨에 대한 모든 값을 반복적으로 쓰십시오. 이렇게하면 읽기의 절반까지 절약 할 수 있습니다.
내 질문은 이미 완료 되었습니까? 효율적인 것으로 입증 된보다 자세한 알고리즘에 관심이 있습니다.
특히, 나는 가장 큰 것부터 가장 작은 것까지 miplevel을 먼저 계산하는 pull-push 알고리즘을 구현하고 있습니다. 두 번째 단계에서는 원래의 텍셀을 사용하거나 거친 miplevel에서 네 개의 주변 텍셀을 보간하여 두 번째부터 작은 것으로 시작하여 miplevel을 정제합니다. 이것에 대한 효율적인 계산 방법은 잘보고 싶지만, 검색을 통해 찾을 수 없습니다.
하지만이 작업을 한 번의 반복 작업으로 수행하면 인접 호출 등의 결과 데이터를 읽어야하므로 동기화 악몽이됩니다. – derhass
@derhass : 하나의 작업 그룹 (반복적으로, 텍셀 당 하나의 스레드가 아님)으로 64x64 타일을 처리 한 다음 레벨 1에 32x32 텍셀을 작성하고 공유 메모리에 쓰고 레벨 2의 16x16 텍셀을 계산하는 것과 같은 것을 상상해 보았습니다. 8x8에서 레벨 3으로 변경 한 다음 다른 호출을 수행하거나보다 효율적인 방법에 따라 1x1로 줄입니다. 어떠한 방법으로도 동기화가 필요하지 않습니다. 두 번째 (푸시) 단계에서 작업 그룹은 중복되는 데이터 타일을 읽지 만 여전히 동기화가 필요하지 않습니다. – karyon