Archives

24 August 2008 の記事

2008/08/24
AMD Stream SDK (2)

Global Buffer は Shader には無い機能で自由に書き込めますが、同時アクセスで
衝突します。2つの入力値を比較し、相違があった場合だけ値を書き込むような
使い方だと、1回の実行で結果を一カ所に集約できます。
コリジョン判定などに使えるかもしれません。

il_ps_2_0
dcl_input_position v0.xy
dcl_resource_id(0)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)
dcl_resource_id(1)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)
dcl_output_generic o0
sample_resource(0)_sampler(0) r0, v0.xy
sample_resource(1)_sampler(0) r1, v0.xy
eq r2.x, r0, r1
cmov g[0], r2.x, v0
mov o0, r2.x000
ret_dyn
end

コンパイル時のエラーは calclGetErrorString() で返ってきますが、
エラー行もわからずあまり意味のある情報が含まれていないので慣れるまで
デバッグは少々大変。

HLSL を使うには utilities\amdhlslCompiler を使います。
HLSL コンパイラ自体はただの lib で、amdhlslCompiler 以下でそのまま
実装されているようです。

関連エントリ
AMD Stream SDK



oyayubiwm による親指シフト定義ファイルでは、デフォルトで JISかな
入力のキーストロークをシミュレートしています。

例えば "か" を入力する場合 [かな]+[T] となります。

親指入力時に、ローマ字でしか入力出来ない文字を定義したいとの質問があったので
ローマ字入力をシミュレートする方法を試しました。

「か」の入力の場合 script 内で下記のように定義されています。

### かな入力シミュレートの場合
func TABLE_FUNC _kana_KA
	SETMODIFIER	MOD_KANA
	SENDKEY	'T'	# か
	ifsw CSW_COUNT
		CALL	_subCount2
	endif
	RETURN	0
endfunc

これを次のように変更すると、JISかな入力ではなくローマ字入力のキーストロークで
文字入力を行うようになります。

### ローマ字入力シミュレートの場合
func TABLE_FUNC _kana_KA
	SENDKEY	'K'	# か
	SENDKEY	'A'	#
	ifsw CSW_COUNT
		CALL	_subCount2
	endif
	RETURN	0
endfunc

ローマ字入力で定義するメリットは、キーボード配列に依存しないことと
かなキー入力でキーボードにマップされていない文字を入力出来る可能性があることです。
デフォルトでローマ字入力になっていないのは、WindowsMobile は描画が遅いため
子音のエコーバック遅延が生じるのを避けたかったためです。

oyayubiwm v1.45
em1key v1.27
em1keypc v1.32