Exemplo n.º 1
0
static void begin_depthmap_pass(Shader *self)
{
	// 描画先を影用深度記録画像にする
	SetDrawScreen(self->depthmap_screen);

	// 影用深度記録画像を真っ白にクリア
	SetBackgroundColor(255, 255, 255);
	ClearDrawScreen();
	SetBackgroundColor(0, 0, 0);

	// カメラのタイプを正射影タイプにセット、描画範囲も指定
	SetupCamera_Ortho(13250.0f);

	// 描画する奥行き範囲をセット
	SetCameraNearFar(10.0f, 13050.0f);

	// カメラの位置と注視点はステージ全体が見渡せる位置
	VECTOR LightTarget = VGet(3620.0f, 0.0f, 3830.0f);

	// カメラの向きはライトの向き
	VECTOR LightDirection = VScale(GetLightDirection(), -12400.0f);

	// カメラの位置と注視点はステージ全体が見渡せる位置
	VECTOR LightPosition = VAdd(LightTarget, LightDirection);

	SetCameraPositionAndTarget_UpVecY(LightPosition, LightTarget);

	self->light_camera_view_matrix = GetCameraViewMatrix();
	self->light_camera_projection_matrix = GetCameraProjectionMatrix();

	SetUseVertexShader(self->depthmap_vs);
	SetUsePixelShader(self->depthmap_ps);
}
Exemplo n.º 2
0
// 影用の深度記録画像の準備を行う
void SetupDepthImage( void )
{
	int i ;
	VECTOR LightDirection ;
	VECTOR LightPosition ;
	VECTOR LightTarget ;


	// 描画先を影用深度記録画像にする
	SetDrawScreen( DepthBufferGraphHandle ) ;

	// 影用深度記録画像を真っ白にクリア
	SetBackgroundColor( 255, 255, 255 ) ;
	ClearDrawScreen() ;
	SetBackgroundColor( 0, 0, 0 ) ;


	// カメラのタイプを正射影タイプにセット、描画範囲も指定
	SetupCamera_Ortho( 13250.0f ) ;

	// 描画する奥行き範囲をセット
	SetCameraNearFar( 10.0f, 13050.0f ) ;

	// カメラの向きはライトの向き
	LightDirection = GetLightDirection() ;

	// カメラの位置と注視点はステージ全体が見渡せる位置
	LightTarget.x = 3620.0f ;
	LightTarget.y = 0.0f ;
	LightTarget.z = 3830.0f ;
	LightPosition = VAdd( LightTarget, VScale( LightDirection, -12400.0f ) ) ;
	SetCameraPositionAndTarget_UpVecY( LightPosition, LightTarget ) ;

	// 設定したカメラのビュー行列と射影行列を取得しておく
	LightCamera_ViewMatrix = GetCameraViewMatrix() ;
	LightCamera_ProjectionMatrix = GetCameraProjectionMatrix() ;


	// モデルの描画にオリジナルのシェーダーを使用するように設定する
	MV1SetUseOrigShader( TRUE ) ;

	// 深度記録画像への描画用のピクセルシェーダーをセット
	SetUsePixelShader( DepthShadow_Step1_PixelShader ) ;


	// 深度記録画像への剛体メッシュ描画用の頂点シェーダーをセット
	SetUseVertexShader( Normal_DepthShadow_Step1_VertexShader ) ;

	// ステージを描画
	MV1DrawModel( stg.ModelHandle ) ;


	// 深度記録画像へのスキニングメッシュ描画用の頂点シェーダーをセット
	SetUseVertexShader( Skin4_DepthShadow_Step1_VertexShader ) ;

	// プレイヤーモデルの描画
	MV1DrawModel( pl.CharaInfo.ModelHandle ) ;

	// プレイヤー以外キャラモデルの描画
	for( i = 0 ; i < NOTPLAYER_NUM ; i ++ )
	{
		MV1DrawModel( npl[ i ].CharaInfo.ModelHandle ) ;
	}


	// モデルの描画にオリジナルのシェーダーを使用するようにした設定を解除
	MV1SetUseOrigShader( FALSE ) ;

	// 描画先を裏画面に戻す
	SetDrawScreen( DX_SCREEN_BACK ) ;
}