Exemple #1
0
void CTriangle::Render( uint32 i_iPass )
{
	switch( i_iPass )
	{
	case ePass_Lighting: break;
	}

	CGraphics *pGraphics = m_pParent->pGetParent()->pGetGraphics();

	CCamera *pCurCamera = pGraphics->pGetCurCamera();
	matrix44 matWorld; matMatrix44Identity( matWorld );
	pCurCamera->SetWorldMatrix( matWorld );

	m_pVertexShader->SetMatrix( m3dsc_worldmatrix, pCurCamera->matGetWorldMatrix() );
	m_pVertexShader->SetMatrix( m3dsc_viewmatrix, pCurCamera->matGetViewMatrix() );
	m_pVertexShader->SetMatrix( m3dsc_projectionmatrix, pCurCamera->matGetProjectionMatrix() );
	m_pVertexShader->SetMatrix( m3dsc_wvpmatrix, pCurCamera->matGetWorldMatrix() * pCurCamera->matGetViewMatrix() * pCurCamera->matGetProjectionMatrix() );

	vector3 vCamPos = pCurCamera->vGetPosition();
	m_pVertexShader->SetVector( 0, vector4( vCamPos.x, vCamPos.y, vCamPos.z, 0 ) );

	CLight *pLight = m_pParent->pGetCurrentLight();
	
	vector3 vLightPos = pLight->vGetPosition();
	m_pVertexShader->SetVector( 1, vector4( vLightPos.x, vLightPos.y, vLightPos.z, 0 ) );
	
	m_pPixelShader->SetVector( 0, pLight->vGetColor() );

	pGraphics->SetVertexFormat( m_pVertexFormat );
	pGraphics->SetVertexStream( 0, m_pVertexBuffer, 0, sizeof( vertexformat ) );
	pGraphics->SetVertexShader( m_pVertexShader );
	pGraphics->SetPixelShader( m_pPixelShader );

	CResManager *pResManager = m_pParent->pGetParent()->pGetResManager();
	CTexture *pTexture = (CTexture *)pResManager->pGetResource( m_hTexture );
	pGraphics->SetTexture( 0, pTexture->pGetTexture() );
	
	CTexture *pNormalmap = (CTexture *)pResManager->pGetResource( m_hNormalmap );
	pGraphics->SetTexture( 1, pNormalmap->pGetTexture() );

	for( uint32 i = 0; i < 2; ++i )
	{
		pGraphics->SetTextureSamplerState( i, m3dtss_addressu, m3dta_clamp );
		pGraphics->SetTextureSamplerState( i, m3dtss_addressv, m3dta_clamp );
	}

	pGraphics->pGetM3DDevice()->DrawPrimitive( m3dpt_trianglelist, 0, 1 );
}
Exemple #2
0
void CBubble::Render( uint32 i_iPass )
{
	switch( i_iPass )
	{
	case ePass_Default: break;
	}

	CGraphics *pGraphics = m_pParent->pGetParent()->pGetGraphics();

	CCamera *pCurCamera = pGraphics->pGetCurCamera();
	matrix44 matWorld; matMatrix44Identity( matWorld );
	pCurCamera->SetWorldMatrix( matWorld );

	m_pVertexShader->SetMatrix( m3dsc_worldmatrix, pCurCamera->matGetWorldMatrix() );
	m_pVertexShader->SetMatrix( m3dsc_viewmatrix, pCurCamera->matGetViewMatrix() );
	m_pVertexShader->SetMatrix( m3dsc_projectionmatrix, pCurCamera->matGetProjectionMatrix() );
	m_pVertexShader->SetMatrix( m3dsc_wvpmatrix, pCurCamera->matGetWorldMatrix() * pCurCamera->matGetViewMatrix() * pCurCamera->matGetProjectionMatrix() );

	CResManager *pResManager = m_pParent->pGetParent()->pGetResManager();
	CTexture *pRainbowFilm = (CTexture *)pResManager->pGetResource( m_hRainbowFilm );
	pGraphics->SetTexture( 0, pRainbowFilm->pGetTexture() );
	
	CTexture *pEnvironment = (CTexture *)pResManager->pGetResource( m_hEnvironment );
	pGraphics->SetTexture( 1, pEnvironment->pGetTexture() );

	m_pVertexShader->SetFloat( 0, pGraphics->pGetParent()->fGetElapsedTime() );
	m_pVertexShader->SetVector( 0, pCurCamera->vGetPosition() );

	pGraphics->SetVertexFormat( m_pVertexFormat );
	pGraphics->SetVertexStream( 0, m_pVertexBuffer, 0, sizeof( vertexformat ) );
	pGraphics->SetIndexBuffer( m_pIndexBuffer );
	pGraphics->SetVertexShader( m_pVertexShader );
	pGraphics->SetPixelShader( m_pPixelShader );

	pGraphics->SetRenderState( m3drs_cullmode, m3dcull_cw );
	pGraphics->pGetM3DDevice()->DrawIndexedPrimitive( m3dpt_trianglelist,
		0, 0, m_iNumVertices, 0, m_iNumPrimitives );

	pGraphics->SetRenderState( m3drs_cullmode, m3dcull_ccw );
	pGraphics->pGetM3DDevice()->DrawIndexedPrimitive( m3dpt_trianglelist,
		0, 0, m_iNumVertices, 0, m_iNumPrimitives );
}
void CSphericalLight::Render( uint32 i_iPass )
{
	switch( i_iPass )
	{
	case ePass_Leaf: return;
	case ePass_SphericalLight: break;
	}

	CGraphics *pGraphics = m_pParent->pGetParent()->pGetGraphics();

	float32 fX = 1.2f * sinf( 1.5f * pGraphics->pGetParent()->fGetElapsedTime() );

	CCamera *pCurCamera = pGraphics->pGetCurCamera();
	matrix44 matWorld; matMatrix44Translation( matWorld, fX, 0.0f, 0.0f );
	pCurCamera->SetWorldMatrix( matWorld );

	m_pVertexShader->SetMatrix( m3dsc_wvpmatrix, pCurCamera->matGetWorldMatrix() * pCurCamera->matGetViewMatrix() * pCurCamera->matGetProjectionMatrix() );

	m_pPixelShader->SetVector( 0, m_vColor );

	m_pVertexShader->SetFloat( 0, 0.0f );
	m_pPixelShader->SetFloat( 0, 0.0f );

	pGraphics->SetVertexFormat( m_pVertexFormatSphere );
	pGraphics->SetVertexStream( 0, m_pVertexBufferSphere, 0, sizeof( vertexformatsphere ) );
	pGraphics->SetVertexShader( m_pVertexShader );
	pGraphics->SetPixelShader( m_pPixelShader );

	pGraphics->SetPrimitiveAssembler( m_pPrimitiveAssemblerSphere );

	if( !m_iMaxVisiblePixels )
	{
		// determine maximum number of pixels that can be rendered - colorwriteenable is false
		pGraphics->SetRenderState( m3drs_zenable, false );
		pGraphics->SetRenderState( m3drs_colorwriteenable, false );

		pGraphics->pGetM3DDevice()->DrawDynamicPrimitive( 0, m_iNumVertices );

		m_iMaxVisiblePixels = pGraphics->pGetM3DDevice()->iGetRenderedPixels();

		pGraphics->SetRenderState( m3drs_zenable, true );
		pGraphics->SetRenderState( m3drs_colorwriteenable, true );
	}

	pGraphics->pGetM3DDevice()->DrawDynamicPrimitive( 0, m_iNumVertices );

	uint32 iRenderedPixels = pGraphics->pGetM3DDevice()->iGetRenderedPixels();
	if( !iRenderedPixels )
		return;

	// Now render the flare ---------------------------------------------------
	m_pVertexShader->SetFloat( 0, 1.0f );
	m_pPixelShader->SetFloat( 0, 1.0f );

	pGraphics->SetVertexFormat( m_pVertexFormatFlare );
	pGraphics->SetVertexStream( 0, m_pVertexBufferFlare, 0, sizeof( vertexformatflare ) );

	CResManager *pResManager = m_pParent->pGetParent()->pGetResManager();
	CTexture *pFlare = (CTexture *)pResManager->pGetResource( m_hFlare );
	pGraphics->SetTexture( 0, pFlare->pGetTexture() );

	pGraphics->SetTextureSamplerState( 0, m3dtss_addressu, m3dta_clamp );
	pGraphics->SetTextureSamplerState( 0, m3dtss_addressv, m3dta_clamp );

	pGraphics->SetRenderState( m3drs_zenable, false );

	m_pPixelShader->SetFloat( 1, (float32)iRenderedPixels / (float32)m_iMaxVisiblePixels );

	pGraphics->pGetM3DDevice()->DrawPrimitive( m3dpt_trianglefan, 0, 2 );
}