Example #1
0
/*calls all of the draw functions for everything*/
void Draw_ALL()
{
  DrawSelectionRings();
  DrawEntities();
  DrawAllParticles();
  DrawMessages();
  DrawMouse();
}
Example #2
0
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();
}