2D에서 물을 시뮬레이션하는 것에 대한 입력을 찾고 있습니다. 나는 다음과 같은 아이디어를 생각해 냈습니다.
세포 오토마타
cell automata를 사용하여 CPU에서 대규모 병렬 시뮬레이션을 수행하십시오 . 다음과 같은 간단한 규칙으로 :
- 맨 아래에 열려있는 셀이 있으면 해당 셀로 이동하십시오.
- 왼쪽 및 오른쪽 셀을 확인하고 둘 중 임의의 것을 선택하고 이동하십시오.
찬성
- 구현이 간단합니다.
- 멀티 플레이어 시스템에서 의미 있고 결정적입니다.
단점
- 아마 정말 느려.
- 설득력이 없습니다.
GPU의 유체 역학
GPU에서 다음과 같은 질감에 대해 대략적인 유체 역학을 수행합니다.
+------+-----+-----+-------+
|R |G |B |A |
+------+-----+-----+-------+
|vX |vY |NULL |Density|
+------+-----+-----+-------+
찬성
- 아마 정말 빠릅니다.
- 상당히 설득력이 있습니다.
- 추가 픽셀 쉐이더는 직접 렌더링 할 수 있습니다.
단점
- 구현하기 어려움.
- 조정하기 어려움.
- 레벨의 크기로 단일 텍스처를 할당 할 수 없습니다.
- 그리드 영역을 겹칠 수 있지만 더 복잡해집니다.
입자
입자를 사용하여 물을 시뮬레이션하십시오. 추가 블렌딩을 사용하여 렌더링하는 동안 알파 채널에 곱셈 함수를 적용하여 물 가장자리를 선명하게합니다.
찬성
- 아마 좋아 보일 것입니다.
- 구현하기 쉽습니다.
- 렌더링하기 쉽습니다.
- 멀티 플레이어 시스템에서는 의미가 있지만 전송에는 상당한 대역폭이 필요합니다.
단점
- 입자 간 효과가 느릴 수 있습니다 (이웃 조회).
- 단색 공간을 통해 물이 '누설'될 수 있습니다 (고형 공간이 작기 때문에 (예 : 1px)).
- 입자 크기에 따라 물에 이상한 구멍이 생길 수 있습니다.
- 입자가 실제 크기보다 더 가깝게 표류하도록함으로써 상기 둘 모두를 완화시킬 수 있지만, 입자 간 및 입자 / 풍경 성능에 문제가 발생할 수있다.
더 이상의 아이디어가 있습니까?
참고 : 이것은 근사치입니다. 물리적으로 올바른 물을 찾지 않고 있습니다. 이 게임은 멀티 플레이어이므로 불행히도 전체 레벨을 지속적으로 시뮬레이션해야합니다.