HowToSetup 1.74 KB
------------------------------------------------------------------------------
 通常の 3 角形の Setup 手順

						Jun 05, 1997
						開発 3 部  安本 吉孝
------------------------------------------------------------------------------

頂点ロード時に座標変換を終了しているものとする.
スクリーン座標     (Xn, Yn)
頂点カラー         (Rn, Gn, Bn, An)
テクスチャ座標     (Sn, Tn)
深さ計算パラメータ (invWin,invWfn)


V0 ( X0,Y0, R0,G0,B0,A0, S0,T0, invWi0,invWf0 )
V1 ( X1,Y1, R1,G1,B1,A1, S1,T1, invWi1,invWf1 )
V2 ( X2,Y2, R2,G2,B2,A2, S2,T2, invWi2,invWf2 )

      +-----+-----+-----+-----+--+--+--+--+-----+-----+
ZsVtx |  X  |  Y  |invWi|invWf|R |G |B |A |  S  |  T  |
      +-----+-----+-----+-----+--+--+--+--+-----+-----+

{
	// Step 1: 外積計算を行ない, ポリゴンの裏表を判定する
	r = (X0-X1)*(Y2-Y1) - (Y0-Y1)*(X2-X1);
	if (r 裏面) goto 終了;

	// Step 2: Reject フラグを調べ, Reject 処理を行なう
	
	// Step 3: Y ソートを行なう
	sort(V0, V1, V2);
	V0 = Vmin;
	V1 = Vmid;
	V2 = Vmax;
	
	// Step 4: 外積値再計算, (1/r)の計算
	r = (X0-X1)*(Y2-Y1) - (Y0-Y1)*(X2-X1);
	invr = 1 / r;
	
	// Step 5: カラーデータ取得および桁あわせ
	
	// Step 6: invWn の最大値を取得し, その値で正規化する
	invWnear = max(invW0, invW1, invW2);
	invW0 = invW0 / invWnear;
	invW1 = invW1 / invWnear;
	invW2 = invW2 / invWnear;

	// Step 7: 各アトリビュート値に invWn を乗ずる
	(R0,G0,B0,A0,S0,T0,W0) = (R0,G0,B0,A0,S0,T0,0x7fff) * invW0;
	(R1,G1,B1,A1,S1,T1,W1) = (R1,G1,B1,A1,S1,T1,0x7fff) * invW1;
	(R2,G2,B2,A2,S2,T2,W2) = (R2,G2,B2,A2,S2,T2,0x7fff) * invW2;

	// Step 8: エッジの傾きを計算
	Mdy = (X1-X0)/(Y1-Y0);
	Hdy = (X2-X0)/(Y2-Y0);
	Ldy = (X2-X1)/(Y2-Y1);

	// Step 9: 各アトリビュートの変化値を計算	
	.
	.
	.
	.
}

------------------------------------------------------------------------------