학사 프로젝트를 위해 GPU에서 isosurface 알고리즘을 탐색하고 있습니다 (특히 실제 필드가 아닌 이진 입 / 출력 복셀 데이터에만 집중). 그래서 OpenFrameworks에서 좋은 오래된 행진 큐브를 실행하고 CPU를 GLSL 컴퓨팅 쉐이더로 포팅하려고 시도하고 다이빙 전에 함정을 고려하는 단계에 CPU 구현이 있습니다. 전에는 모두 나에게 새로운 것입니다.
첫 번째 문제는 작업 그룹에서 수십 또는 수백 개의 스레드에서 효율적으로 조회 테이블을 사용하는 방법입니다. GPU는 작업마다 다른 종류의 메모리를 가지고 있지만 각 작동 방식이나 사용할 유형을 완전히 확신하지 못한다는 것을 알고 있습니다.
Paul Bourke의 클래식 copypasta 테이블은 256 * 16 배열이므로 스칼라 바이트 유형을 사용하는 경우 4kb 텍스처 또는 SSBO로 압축 될 수 있습니다.
문제는 다른 스레드가 서로 넘어지지 않도록하는 방법입니다. 각 작업 그룹의 많은 큐브는 동일한 구성을 가질 수 있으므로 동시에 버퍼의 동일한 위치에 액세스하려고합니다. 이 문제를 해결하기위한 해결 방법이나 최적화가 있습니까?