bate's blog

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

3D

ジオメトリシェーダーで三角

3D

アプリコードはそのままで点を三角形にする。シェーダーコード struct VS_INPUT { float4 Pos : POSITION; }; struct GS_INPUT { float4 Pos : POSITION; }; typedef GS_INPUT VS_OUTPUT; struct PS_INPUT { float4 Pos : SV_POSITION; float4 Col : COLOR0;…

ジオメトリシェーダーで点

3D

ジオメトリシェーダーを使うために簡単なサンプルを作った。3つ点があり、それぞれの点からさらに2つの点を作る。シェーダーコード struct VS_INPUT { float4 Pos : POSITION; }; struct GS_INPUT { float4 Pos : POSITION; }; typedef GS_INPUT VS_OUTPUT…

hlslでの構造体のアライン

3D

何かズレて面倒くさい。 16byte alignmentらしい。 float4かmatrixじゃない場合は注意が必要。 paddingするのかしら。

MRTs

3D

マルチレンダーターゲットを使ってみた。 1パス目は、レンダーターゲットは2つ。 2パス目は、1パス目のレンダーターゲットをテクスチャとして利用。左と右は別々のテクスチャ。 MRTsで別々のレンダーターゲットに描画したものをテクスチャにしたもの。 Text…

IDベースの輪郭

3D

オブジェクトにIDを振ってIDベースで輪郭を付ける。 輪郭はIDが違うオブジェクトの境界に付く。左は輪郭だけ、右は通常描画。オブジェクトIDが同一の場合 オブジェクトIDが違う場合

テクスチャサンプラーの設定

3D

輪郭抽出の場合リニアとニアレストで注意が必要。

輝度によるエッジ検出

3D

t-potからのパクリ。 サンプリングポイントを増やして重みを付ければもっと良くなる。異なる色の境界を黒にする。処理の流れは下記の通り。 サンプリング→モノクロ化→輝度の差計算→ネガポジ反転 //--------------------------------------------------------…

テクスチャUVアニメ

3D

UVも動かしてみた。 //-------------------------------------------------------------------------------------- // Pixel Shader //-------------------------------------------------------------------------------------- float4 PS(PS_INPUT input) …

射影テクスチャ

3D

お仕事で使いそうなので実装テストしてみた。 tex2DProjが使えないので自分でwで割ることになる。カメラから四角形にテクスチャを投影。 //-------------------------------------------------------------------------------------- // Vertex Shader //---…

ガウスフィルタ

3D

ガウスフィルタをやってみたが、重い。 フィルレートが駄目なのか、シェーダーが駄目なのか、DirectXAPIの使い方が駄目なのか。 そして、ボケ方が荒い。

ボカシ

3D

簡単なボカシをしてみた。 ガウスは後でやることにした。 //-------------------------------------------------------------------------------------- // Pixel Shader //------------------------------------------------------------------------------…

ポストプロセスでモノクロ化

3D

準備ができたのでポストプロセスを色々と試してみる。 画面全体をモノクロにする。 float4 c = Texture.Sample(SamplerLinear, input.Tex0); #if MONO // モノクロ float4 mono = 0.3f*c.r+0.6f*c.g+0.1f*c.b; return mono; #else // カラー return c; #endi…

画面を覆う四角形ポリゴン

3D

ポストプロセスをするのに使うので、試しておいた。四角形で画面を覆う方法 1:(-1,-1,0)と(1,1,0)を対角とするような四角形を作る 2:頂点シェーダーで座標変換をせずにそのままフラグメントシェーダーに渡すDirectX11のサンプルを改造してスクショを撮った。…

three.jsとdat.guiで遊ぶ その4

3D

球を矢印モデルのY軸(緑色)方向に飛ぶようにした。 球が飛んでいる間に矢印モデルを回転すると球も追従してしまうけど。 球の速度と加速度を弄れるようにした。重力はまだ。http://dl.dropbox.com/u/67579260/sample04.html

three.jsとdat.guiで遊ぶ その3

3D

背景の色を変えられるようにした。 行列計算で値が壊れるのは何故か。http://dl.dropbox.com/u/67579260/sample03.html

three.jsとdat.guiで遊ぶ その2

3D

カメラ操作はキーボードの上下左右にした。 dat.guiで軸の表示と非表示の切り替えをする。http://dl.dropbox.com/u/67579260/sample01.htmlCanvasRendererからWebGLRendererに変更した。 <html lang="en"> <head> <title>three.js, dat.GUI</title> <meta charset="utf-8"> </meta></head></html>

three.jsとdat.guiで遊ぶ

3D

テスト的なものを作ってみた。 カメラは制約付きで球上を動きます。 http://dl.dropbox.com/u/67579260/sample.html コードはサンプルの改造程度のもの。 <html lang="en"> <head> <title>three.js, dat.GUI</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> …</meta></meta></head></html>

色=輝度

3D

色=放射輝度らしい。 放射強度は眩しさらしい。開発終盤なのに仕様を書く馬鹿がいる。 勘弁して欲しい。

レイトレ

3D

レイトレしてみるものの上手くいかない。 バグだけど綺麗な模様だったりする。 この模様を出すアルゴリズムを知りたい。

衝突時間

衝突時間から衝突を再現した。 軸平行の移動しかしていないので、複雑なことはできていない。 さらには質点扱いなので剛体的な衝突後の動きはできていない。 前記の課題は放置してある。ゲームプログラミングのためのリアルタイム衝突判定作者: Christer Eri…

erratum

ゲームプログラミングのためのリアルタイム衝突判定を読んでサンプル作ると上手く動かないことが多い。ゲームプログラミングのためのリアルタイム衝突判定作者: Christer Ericson,中村達也出版社/メーカー: ボーンデジタル発売日: 2005/10メディア: 単行本購…

動いているAABBとBSP-Treeに入れてある複数のAABBの接触判定

CAABBは軸平行境界ボックス(Axis-Aligned Bounding Box)構造体をメンバ変数に持つクラス。ゲームプログラミングのためのリアルタイム衝突判定作者: Christer Ericson,中村達也出版社/メーカー: ボーンデジタル発売日: 2005/10メディア: 単行本購入: 7人 クリ…

以前に頭を悩ませたこと

PCを整理していたら昔のプログラムが出てきた。 BSP-Treeを構築しようと悩んだり試行錯誤していた頃のだ。 BSP木のサンプルコードをネットで探してもなかった。 正確にはあったが、自分のプログラムの能力不足で理解できなかった。 BSP Tree FAQとかのサイト…

BSPTreeサンプル

折角なのでBSPTreeの試行錯誤の末を晒してみようと思います。 ちなみにWin32コンソール用に作った上手いこと動くかの確認サンプルです。 プログラムの実行での不具合やその他諸々には責任を取れませんので、勘弁してください。ゲームプログラミングのための…

以前に頭を悩ませたこと

PCを整理していたら昔のプログラムが出てきた。 BSP-Treeを構築しようと悩んだり試行錯誤していた頃のだ。 BSP木のサンプルコードをネットで探してもなかった。 正確にはあったが、自分のプログラムの能力不足で理解できなかった。 BSP Tree FAQとかのサイト…