/*calls all of the draw functions for everything*/ void Draw_ALL() { DrawSelectionRings(); DrawEntities(); DrawAllParticles(); DrawMessages(); DrawMouse(); }
void ParticleTest::Draw( bln is_stepTwo ) { for( PSystem &ps : _psystems ) { for( PSystem::CS &cs : ps.csStack ) { cs.uniforms->DrawDebugInfo( is_stepTwo ); } } if( is_stepTwo == false ) { return; } RendererGlobals::i_ImContext->CSSetUnorderedAccessViews( 0, 1, _frameDataUAV.Addr(), 0 ); RendererGlobals::i_ImContext->CSSetShader( _eraseFrameDataCS.get(), 0, 0 ); RendererGlobals::i_ImContext->Dispatch( (UINT)MEMALIGN( (_particlesCount + _meshVerticesCount), 64 ) / 64, 1, 1 ); ID3D11UnorderedAccessView *resetUAVs[ 3 ] = {}; RendererGlobals::i_ImContext->CSSetUnorderedAccessViews( 0, 3, resetUAVs, 0 ); RendererGlobals::i_ImContext->CSSetConstantBuffers( 0, 1, _uniBuffer.Addr() ); RendererGlobals::i_ImContext->CSSetConstantBuffers( 13, 1, &RendererGlobals::ai_VSShaderRegisters[ 13 ] ); RendererGlobals::i_ImContext->CSSetUnorderedAccessViews( 0, 1, _particlesVBUAV.Addr(), 0 ); RendererGlobals::i_ImContext->CSSetUnorderedAccessViews( 1, 1, _frameDataUAV.Addr(), 0 ); for( PSystem &ps : _psystems ) { for( PSystem::CS &cs : ps.csStack ) { RendererGlobals::i_ImContext->CSSetShader( cs.uniforms->GetComputeShader(), 0, 0 ); ui32 start = ps.start; if( ps.type == PSystemType::Mesh ) { start += _particlesCount; } cs.uniforms->SetUniformsAndUAVs( _uniBuffer, start ); RendererGlobals::i_ImContext->Dispatch( ps.count / 64, 1, 1 ); } } RendererGlobals::i_ImContext->CSSetUnorderedAccessViews( 0, 3, resetUAVs, 0 ); DrawAllParticles(); DrawAllMeshes(); }