간편한 GPU를 위해 VVV에서 Instance Noodles 가져오기

4023 단어 vvvvGPGPU

이른바 Instance Noodles


Instance Noodles | vvvv
DirectX11의 Compute Shader를 사용하여 GPU 계산을 하고 Geometry Shader를 사용하여 기하학적 제어를 하며 일반적인 VVVVV의 노드 느낌으로 처리하는 Contributions(프로그램 라이브러리).
VVV에 기본적으로 포함된 맵, 감마, Vector 등 기본 노드의 Compute Shader 에디션이 대거 포함돼 있어 스스로 면도기를 쓰지 않아도 GPGPU를 쉽게 이용할 수 있다.
아래에 붙은 것은 컬소음으로 3만 개의 입자가 구불구불한 느낌을 주는 스티커와 그림 그리기 결과다.이런 느낌으로 비교적 간단한 패치로 간단하게 GPU 가능.
아래 패치로 말하면Brownian,Curl,Vector3DSplit,Map,Vector3DJoin,Polar는 모두 Instance Noodles에 포함된 노드이며, 내용은 사다의 패치만 호출하는 것이다.


설치하다.


전제로 DirectX11을 사용하기 때문에 DX11 패키지가 필요합니다.
가입하지 않은 분들은 vvv 설치 가이드 [DX11 대응] - Qita를 읽고 DX11 패키지 가져오기를 완료하십시오.
Contributions 페이지의download에서 zip 파일을 다운로드하여 압축된 폴더를 VVVV의 설치 폴더에 있는 패키지 폴더에 놓으면 사용할 수 있습니다.SpriteBuffered를 열고 잘 돌아가면 가져오기가 완료됩니다.
가져온 후girlpower와...\packs\InstanceNoodles\girlpower\Compute\01_ComputeBasic.v4p 폴더에 어떤 패치와 도움말 패치가 준비되어 있는지 확인하세요.

알갱이를 꺼내봐.


우선 간단한 것부터.
위의 패치에서도 사용된 노드...\packs\InstanceNoodles\nodes\modules를 사용합니다.이것은 브라운 동작을 시뮬레이션하는 노드로 지정된 수량의 브라운 운동의 좌표값을 얻을 수 있다.Brownian의 출력은 BrownianSpriteBuffered에 연결된다.Position 3D Buffer는 입자를 나타내기 위한 차폐물로 볼 수 있다.
그리려는 입자 수는 SpriteBufferedBrownian의 Spread Count 엔트리에서 각각 설정합니다.SpriteBuffered의 출력은 DX11 Layer이며, DX11용 렌더에 연결하면 입자가 표시됩니다.

표시할 수 있다면 입자 수를 계속 늘려 보세요.
좌표값이 GPU 쪽으로 이동해 GPU로 계산하면 입자 수를 상당히 늘려도 잘 처리하지 않아야 하기 때문이다.
손 옆에 있는 지포스 940M이면 100만 개의 입자가 나와도 48fps 정도의 느낌이 든다.

CPU-GPU 간의 값 인수인계 정보


GPU를 계산할 때 계산에 필요한 값은 기본적으로 GPU의 Structured Buffer로 옮겨야 한다.CPU → GPU의 전송 사용 SpriteBuffered 이 노드입니다.
예를 들어 Instance NoodlesDynamicBuffer에서 생성된 10000*xyz의 값을 사용하려면 Spread를 직접 전달할 수 없기 때문에 RandomSpread에서 GPU에 전달한 후 교부할 수 있다.

또 계산 결과도 GPU에 저장돼 있어 스프레드로 꺼내야 할 때 GPU→CPU 읽기가 필요하다.여기에 노드Attractor를 사용합니다.

총결산


기본적인 건 이런 느낌 아닐까...?패치가 GiitHub에 놓여 있습니다.
vvvv-sandbox/InstanceNoodlesSample at master · clomie/vvvv-sandbox
이번에는 건드리지 않았지만 다른 DX11.GeomFX 계열의 Geometry가 효과를 낼 수 있는 느낌의 노드가 있는데, 그곳에는 매우 편리해 보이는 녀석들이 많다.
지금도 버퍼를 처리할 수 있는 노드가 충실하기 때문에 인스턴트 노드만 가져와도 많이 할 수 있을 것 같다.댐퍼가 없어서 좀 아파요.
VVVV로 DX11을 만들면 패키지와 함께 넣을 수 있다.

DX9에서 GPU를 하고 싶은 경우.


텍스쳐의 각 픽셀에 대한 색상 정보를 Vertex Shader와 Pixel Shader로 단순한 flat 값으로 계산합니다.
DirectX9에 GPU를 탑재하려는 사람은 아래의 기사를 참고하면 된다.
.ore,GPU

좋은 웹페이지 즐겨찾기