bate's blog

調べたこと実装したことなどを取りとめもなく書きます。

FXComposer超入門2

以前のFXComposer超入門の板にテクスチャを貼ってみる。

テクスチャはファイル指定できるようにする。




1.前のプロジェクトを開く。
2.左側の[Effects]→[Floor]→[Floor.cgfx]を選ぶ。
3.中央にcgfxファイルが開く。
4.下のコード1になるように変更する。

/*

% Description of my shader.
% Second line of description for my shader.

keywords: material classic

date: YYMMDD

*/

// My Add
float4x4 WorldViewProj : WorldViewProjection;

float4 FloorColor : Color
<
	string UIName = "Floor Color";
	string UIWidget = "Color";
> = { 0.1f, 0.8f, 0.1f, 1.f };

texture FloorTexture : Diffuse
<
	string ResourceName = "rockwall.jpg";
	string ResourceType = "2D";
	string UIName = "Surface Texture";
>;

sampler2D FloorSampler = sampler_state
{
	Texture = <FloorTexture>;
	MinFilter = LinearMipMapLinear;
	MagFilter = Linear;
};

//-----------------------------------------------
// Struct
//-----------------------------------------------

// input data from vertex buffer
struct appdata
{
	float4 Position		: POSITION;
	float2 UV			: TEXCOORD0;
};

// pass from vertex program to pixel program
struct VertexOutput
{
	float4 Position		: POSITION;
	float2 TexCoord		: TEXCOORD0;
};

// vertex shader entry point
VertexOutput mainVS( appdata IN )
{
	VertexOutput OUT = (VertexOutput)0;
	OUT.Position = mul( WorldViewProj, IN.Position );
	OUT.TexCoord = IN.UV;
	return OUT;
}

// pixel shader entry point
float4 mainPS( VertexOutput IN ) : COLOR
{
	// My Add
	float4 color = tex2D( FloorSampler, IN.TexCoord );
	return color * FloorColor;
}

technique technique0 {
	pass p0 {
		CullFaceEnable = false;	
		VertexProgram = compile vp40 mainVS();
		FragmentProgram = compile fp40 mainPS();
	}
}

5.下の絵1の状態になっていることを確認する。

絵1

6.左側の[Materials]→[Floor_Material]を選ぶ。
7.右側のFloor_Materialにある[Surface Texture]を押して四角を出す。
8.四角を押して[Image]を押す。
9.新しく出てくるウィンドウのバーにあるプラスを押す。
10.テクスチャを選ぶ。ここでは「nvidia1.dds」を選ぶ。
11.下の絵2の状態になっていることを確認する

絵2

12.ウィンドウに追加された「nvidia1.dds」を選び、[OK]を押す。
13.下の絵3の状態になっていることを確認する。

絵3

14.「nvidia」と書かれたテクスチャが板に貼られたことを確認する。
15.[Floor Color]も変更できます。
16.おしまいです。