トップページ > 記事閲覧
ビルボード機能の拡張の要望
名前:gufo 日時: 2016/04/16 02:12

いつもお世話になっています。 先日、DrawBillboard3DToShader関数を追加されたようですが 下記サイトにあるようなソフトパーティクル処理を実装したいと思いました。 h ttp://maverickproj.web.fc2.com/pg09.html そこでDrawBillboard3DToShader関数で使うピクセルシェーダの入力に ビルボードのビュー座標での位置情報を入れてくれるような機能の追加を希望します。 また、Y軸回転のみを考慮したビルボード機能(木や草などの描画で使うようなもの) をライブラリ側で実装してもらいたいです。 大変お手数ですが、機能追加を検討していただけると幸いです。
メンテ

Page: 1 |

Re: ビルボード機能の拡張の要望 ( No.1 )
名前:管理人 日時:2016/04/18 00:25

すみません、今の大きな目標である Android 対応の作業が滞って久しいので、 現時点で既にお受けしている機能追加のご要望を除いて、暫くの間、 少し・又はそれ以上に実装に時間が掛かりそうな機能追加のご要望は お受けしないようにしようと思います なのでビルボードの Y軸回転機能の追加やピクセルシェーダの入力情報の追加には 対応することが出来ません、申し訳ありません m(_ _;m ただ、DrawBillboard3DToShader は頂点シェーダーについても自前で実装することが出来ますので、 以下の DrawBillboard3DToShader の描画に使用されるデフォルトの頂点シェーダーを改造して、 頂点シェーダーの出力にビュー座標を追加してみてください // 頂点シェーダーの入力 struct VS_INPUT { float4 Position : POSITION ; // 座標( ローカル空間 ) float4 Diffuse : COLOR0 ; // ディフューズカラー float4 Specular : COLOR1 ; // スペキュラカラー float2 TexCoords0 : TEXCOORD0 ; // テクスチャ座標 float2 TexCoords1 : TEXCOORD1 ; float2 TexCoords2 : TEXCOORD2 ; } ; // 頂点シェーダーの出力 struct VS_OUTPUT { float4 Position : POSITION ; float4 Diffuse : COLOR0 ; float4 Specular : COLOR1 ; float2 TexCoords0 : TEXCOORD0 ; float2 TexCoords1 : TEXCOORD1 ; float2 TexCoords2 : TEXCOORD2 ; } ; float4 cfProjectionMatrix[ 4 ] : register( c2 /* DX_VS_CONSTF_PROJECTION_MAT */ ) ; // プロジェクション行列 float4 cfViewMatrix[ 3 ] : register( c6 /* DX_VS_CONSTF_VIEW_MAT */ ) ; // ワールド → ビュー行列 float4 cfLocalWorldMatrix[ 3 ] : register( c94 /* DX_VS_CONSTF_WORLD_MAT_START */ ) ; // ローカル → ワールド行列 // 3D用 VS_OUTPUT VS3D_Normal( VS_INPUT VSInput ) { VS_OUTPUT VSOutput ; float4 WorldPosition; float4 ViewPosition; // 座標変換 WorldPosition.x = dot( VSInput.Position, cfLocalWorldMatrix[ 0 ] ) ; WorldPosition.y = dot( VSInput.Position, cfLocalWorldMatrix[ 1 ] ) ; WorldPosition.z = dot( VSInput.Position, cfLocalWorldMatrix[ 2 ] ) ; WorldPosition.w = 1.0f; ViewPosition.x = dot( WorldPosition, cfViewMatrix[ 0 ] ) ; ViewPosition.y = dot( WorldPosition, cfViewMatrix[ 1 ] ) ; ViewPosition.z = dot( WorldPosition, cfViewMatrix[ 2 ] ) ; ViewPosition.w = 1.0f; VSOutput.Position.x = dot( ViewPosition, cfProjectionMatrix[ 0 ] ) ; VSOutput.Position.y = dot( ViewPosition, cfProjectionMatrix[ 1 ] ) ; VSOutput.Position.z = dot( ViewPosition, cfProjectionMatrix[ 2 ] ) ; VSOutput.Position.w = dot( ViewPosition, cfProjectionMatrix[ 3 ] ) ; // パラメータセット VSOutput.Diffuse = VSInput.Diffuse ; VSOutput.Specular = VSInput.Specular ; VSOutput.TexCoords0 = VSInput.TexCoords0 ; VSOutput.TexCoords1 = VSInput.TexCoords1 ; VSOutput.TexCoords2 = VSInput.TexCoords2 ; return VSOutput ; }
メンテ
Re: ビルボード機能の拡張の要望 ( No.2 )
名前:gufo(解決) 日時:2016/04/22 16:34

お忙しい中返信していただきありがとうございます。 頂点シェーダを改造できることには気づきませんでした…。 おかげさまで望み通りの処理を実装できそうです。 Android対応版楽しみにしています。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存