첫 번째 게임 엔진에서 GPU 입자 시스템을 구현하려고합니다. 전에 CPU에 하나를 구현했지만 지금은 더 효율적으로 만들려고 노력하고 있습니다. 내 문제는 특히 평생 입자를 산란시키는 것입니다.스폰 GPU 입자
입자 엔진을위한 프레임 버퍼 텍스처를 사용하고 있기 때문에 매우 병렬 적이지만 CPU로 돌아갈 수없는 비용이 들지는 않습니까? 해당 입자 시스템에 대한 계산을 처리하는 쿼드를 그리는 데 첫 번째 단계가 있습니다 (정렬을 위해 두 번째 쿼드가 있어야 할 것입니다). 그런 다음 glDrawArraysInstanced를 실행합니다.
한 가지 생각은 부울 또는 int를 사용하여 입자를 생성해야 할 때, 입자를 만들 필요성 또는 스폰 할 입자의 양을 나타내며 둘 다 CPU에 의해 초기화됩니다. 그래서 한 개의 입자 (픽셀)가 발견되면 (첫 번째 fbo 텍스처의 알파 값이라고 가정 해 봅시다) 영 (0)보다 적습니다. 그리고 그것을 생성해야한다는 것을 알고 있습니다. 나머지 부분에 대해서는 생성을 어떻게 비활성화합니까? 파티클 수를 줄이거 나 버릴 파티클 수를 줄이십니까? 나는 변형 된 피드백 같은 것을 들었다. 그러나 그것이 최선의 방법인지는 모른다. 그리고 상태가없는 입자는 소리를 제한합니다. 모든 입자가 1 : 1의 산란율을 갖는 것은 아닙니다.
질문을 간단히 반복하려면 GPU 입자를 생성하는 가장 좋은 방법은 무엇입니까?
그래도 CPU에 입자 수가 많으면 glDrawArraysInstanced에서 그릴 양을 설정할 수 있으므로 답변에 포함시킬 수 있다면 감사 할 것입니다.
나는 이동을해야합니다
"첫 번째 게임 엔진에서 작업 중"- [게임이 아닌 엔진 쓰기] (http://geometrian.com/programming/tutorials/write-games-not-engines/) –
전에 게임. 다른 사람들의 엔진을 사용하는 것에 지쳐서 모든 게임에 대해 완전히 새로운 코드베이스를 작성하고 싶지는 않습니다. 저는 이미 렌더링, 물리학, 조명, 입력 및 기타 수많은 시스템에서 수 많은 작업을 수행했습니다. 멈추는 것은 지금 좋은 생각처럼 들리지 않습니다. –
아, 그리고 @JesperJuhl - 방금 기사를 읽었습니다. 이미 여러 가지 게임 아이디어가 계획되어 있으며 코드의 모든 단일 시스템이 여러 유형의 게임에서 작동 할 예정입니다. 한 게임을 코딩하면 유연성이 떨어질 것입니다. 예를 들어, 필자의 입력 시스템은 Linux 및 Windows, 곧 Mac과 호환되며 사용하기 쉽고 유연한 다양한 입력 및 기능과 함께 작동하도록 설계되었습니다.힘든 사랑을 가져 주셔서 감사합니다.하지만 실제로 필요하지는 않습니다. 단지이 문제를 해결하기위한 최선의 (그리고 가장 유연한) 방법을 찾아야합니다. –