シェーダープログラマが集うスレ
■ このスレッドは過去ログ倉庫に格納されています
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,・∀・) < ゲームにもシェーダーの時代到来でち♪
@_) \_______
バーテックスシェーダーとかピクセルシェーダーとかを語りまくるスレ。 >>512
520の内容を試してみたのですが521の予想通り真っ黒でした・・・。
もう一度FxComposerとDirectXの仕様等々を調べてみます。
3日間にわたって質問に答えて頂いてありがとうございました。 >>522
FxComposer2.5インストールして試してみた。
たしかに頂点カラー、読み込めないね。
マテリアルカラーは、FxComposerに放り込んだ時点で反映されて表示されるものの、
それをHLSLで使うことはできないみたい。
しかも、複数マテリアルだと、表示はするものの、編集は一つしかできないw
頂点カラーについては読み込もうとすらしていないような気がするw
こういう使い方は想定されていないんじゃないかと思う。
そこで、FxComposerを使わない代替案を考えたほうがイイと思うんだが、
>>510がHLSLの勉強をするにあたって、目標としていることは何だろうか?
どうしてもFxComposerを使わなければならない理由はある?
DirectXプログラムでグラフィック表現したいとかだったら、
簡単なDirectXプログラムを組んで、その上でシェーダ開発したほうがより実践的で良いこともある。
(FxComposerの魅力的な機能も捨て難いけどね) >>523
なるほど。。。
わざわざありがとうございます!
HLSLを勉強する目的はゲームエフェクトを作成したいと考えているのです
もっと突っ込むと少しパラメータをいじると炎の大きさや色を変えてエフェクトファイルを出力する、と言った
知識なしである程度のエフェクトを作成することのできるツール(?)を作りたいな〜と。
なのでFxComposerを使わなければならない理由はありません。
>>DirectXを組む
昔挑戦して挫折したんですよね…
この機会にリベンジしてみます! >>524
おお、パーティクルエディタか!
おもしろそうだね!
パーティクルの挙動とかをゲーム実行時に動的に制御したりとか幅を広げることを考えると、
DirectXをベースにした開発基盤を構築したほうがベターではあるね。
DirectXプログラム、しんどいとは思うけど、よい志があるんだからがんばってほしいな。
フリーで高性能なゲームエンジンが台頭している中、熱いよ君。
また壁に当たったら、このスレやDirectXスレで聞いてみてくれ。
応援してるぞ。 >>525
Mayaとか3DSmax使えば簡単にできる事をわざわざやろうとしている変人ですw
が、そう言えってもらえるとモチベーション上がります!
DirectXから勉強初めて行きたいと思います
ありがとうございました! 一つのシェーダ「A」を作って、そのシェーダからテクスチャや各種強度の数値などのパラメータ部分だけを変更したマテリアルを使う場合
シェーダが一つでもそれを使うマテリアルの種類が多ければ多いほど処理が重くなるのかな?
マテリアル切り替えのコストはけっこう大きいと聞いたことがある。
だいぶ前の話なので、最近は気にならないレベルに改善されてるかもね。 DirectX9でHLSL使っていろいろ実験してるけど
シェーダ面白いね 初心者です、質問させてください。
tex2DってLOD計算を内部でやってると思うのですが
tex2Dlod使って同じ結果を導く方法が分かりません
x = ddx(UV*texWidth);
y = ddy(UV*texHeight);
d = log2(max(dot(x,x),dot(y,y)));
tex2Dlod(tex,float4(UV,0,d));
こんな感じかと思ってFXComposerで比較してみたけど若干見え方違って疑問
ddxとかddy辺りも理解が曖昧ですが分かりやすい解説などあれば教えて欲しいです。 >>532のコード、2の対数の前にsqrt忘れてました。
LOD計算を初めシェーダに関してわからない事も多いので
他の勉強もしながら考えてみようと思います。 レンズフレア(ゴーストじゃなくて光芒?の方です)を実装したいのですが、
実装レベルで解説されているサイトが見つけられなくて困っています。
そもそもあったとしても理解できるかわからないのですが、いいサイトまたは
検索キーワードがあったら教えてください。
光芒 グレア フレア レンズフレア シェーダ GLSL マルチパス
ゲームエフェクト フーリエ変換 FFT
それっぽいキーワード(やその組み合わせ)で検索しているのですが
ミドルウェアのその宣伝やプロモーション、完成したCGなどしか
引っかかってきません。 光芒って、事前に用意したテクスチャを上からかけるだけじゃね普通。 元の画面を描画
輝度の高いところを抽出
座標をずらしつつ何度も重ね合わせて光芒を作成
元の画面に重ね合わせる
って手順だったはず
t-potさんのサイトに解説されてないかな?
なかったらごめん
あと検索ワードは俺も分からぬ 545です
>>535
>>536
ありがとうございます。
なるほど、いろいろやり方があるのですね。
というか光芒といってもいろいろあるからそのイメージが伝えきれてなかった
かもしれないのでその点申し訳なかったです。
今さらですが一応イメージに近い動画があったので貼らせていただきます。
http://eimeiblog.blogspot.jp/2012/05/blog-post.html
これをみるとやはりテクスチャなのかな・・・
t-potさんのサイトも拝見させていただきました。
資料が多くてまだ全部見れておりませんが、
一通り見て参考になる部分を探してみます。
ありがとうございました。
シャドウマッピングについて学びたいんですが、おすすめの書籍やサイトなどありますでしょうか?
「リアルタイムシャドウ」http://www.amazon.co.jp/dp/4862461670/
これを買ってみたんですが、ちょっと自分には難し過ぎた・・・。
デプスマップベースのシャドウの基本から説明されてる資料などあれば教えていただけるとありがたいです。 DirectX9シェーダでパーティクル(ポイントスプライト)やってるんだけど
2種類のパーティクルを同じD3DXEFFECTインスタンス経由(当然*.fxファイルも同じ)で描画しようとしている。
このとき、IDE(VisualStudio)からF5実行するときは正常に表示されるんだけど、
exe(Debug/Release)の直叩きで実行すると、2者のテクスチャが入れ替わったり、そもそも描画されなくなる現象に遭遇している。
ちなみに実行ステップ順は
pFX->Begin(0, 0);
pFX->BeginPass(0);
パーティクルA描画(頂点バッファ書き換えしてDrawPrimitive)
パーティクルB描画(頂点バッファ書き換えしてDrawPrimitive)
pFX->EndPass();
pFX->End();
またリソース作成は、
テクスチャ → D3DPOOL_MANAGED / D3DUSAGE_WRITEONLY
頂点バッファ(位置D3DXVECTOR3 + サイズFLOAT) → D3DPOOL_MANAGED / D3DUSAGE_WRITEONLY
テクスチャは、パーティクルAとBでそれぞれ別々に作成して確保している。
頂点バッファも、パーティクルAとBでそれぞれ別々に作成して確保している。
ちなみにパーティクルAかBのどちらかの頂点バッファ作成をD3DPOOL_DEFAULT/D3DUSAGE_DYNAMIC + D3DUSAGE_WRITEONLYにすると正常に描画される。
両方D3DPOOL_DEFAULTの方にすると正常に描画されなくなる。
原因を教えたってくれませんかエロイングマスター >>540
カレントディレクトリの問題じゃないの? >>541
>ちなみにパーティクルAかBのどちらかの頂点バッファ作成をD3DPOOL_DEFAULT/D3DUSAGE_DYNAMIC + D3DUSAGE_WRITEONLYにすると正常に描画される。 こういうエラーはメモリ関係のエラーだろうから、頂点バッファが小さいとかそんなんじゃないかな。 >>543
>頂点バッファが小さい
え、どういうことですか?
エロイングマスター? SL#(えすえるしゃーぷ)とは、GPUで実行されるプログラマブルシェーダーを、超高級言語である
C#で書けてしまうという夢のようなオープンソースのフレームワークである。
http://monobook.org/wiki/SL_Sharp シェーダモデル4のHLSLエフェクトのデバッグをしたいんだけど、FX ComposerがうちのPCで起動しない
(スプラッシュウィンドウ表示中に「エラーが発生しました」的な簡素なダイアログが出て落ちる)
他に、エフェクトの動作確認ができるソフトを知っていたら、誰か教えてくれないだろうか
VisualStudio2012の非Express版にはデバッグ機能があるらしいけど、さすがにちょっと躊躇する値段なので… >>546
FX Composerのエラー落ちは
fxc.fxconfig内が文字化けしてるからだと思う
先頭の・ソを消せば動いたよ hlslやglslで簡単なコードは書けるのですが
少し難解な計算式などが出てくると途端にわからなくなってしまいます
そこで3dcg数学が学べる書籍などがあればご教授ください
よろしくお願いします 個人的には
「ゲームプログラミングのための3Dグラフィックス数学」
はなかなか良かったように思う。 ★2ch勢いランキングサイトリスト★
◎ +ニュース
・ 2NN
・ 2chTimes
◎ +ニュース新着
・ 2NN新着
・ Headline BBY
◎ +ニュース他
・ Desktop2ch
・ 記者別一覧
◎ 全板
・ 全板縦断勢いランキング
・ スレッドランキング総合ランキング
◎ 実況込み
・ 2勢
・ READ2CH
・ i-ikioi
※ 要サイト名検索 トゥーンシェーディングで光源を1つだけに限定にしたら、
当然と言うか、裏側は真っ暗になってしまった。
2つ以上に対応すればいいんだろうけど、単に光源の内積の総和を取って
0〜1にクランプするべきか、重みあり平均を取るか。
光源の数だけトゥーンシェーディング用のテクスチャを持たせて重ねる手もある。
あと、野外で強い日光が差しているだけの場合、補助の光源をどう設定するか、
色々考えることが多いね。技術的なことだけ分かればいいわけではないみたい。 ああ、“真っ暗”という書き方は分かりにくかった、申し訳ない。
トゥーンシェーディングなので、環境光とか設定しなくとも
用意したグラデーションテクスチャの一番暗い色になるんよ。
逆光になる側だと、顔全体がその一番暗い色になるというわけ。 どうせ人も少ないし質問していい?
VS側で出力するようになっているもの(TEXCOORDとかNORMALとか)を
PS側で利用しない場合、自動的にその計算は飛ばすように
ランタイムが最適化している、とかいうことはあり得る?
要はシャドウ用の深度のPSと、画像バッファ出力用のPSを、
同一のVSと組み合わせてしまってよいのかということ。
コンパイル時は結構、無意味な計算をカットしてたりするけど、
さすがにそこまでは賢くないかな。 気さくで頼もしい紳士の方々にお伺いしたいのですが(笑)
HLSL3.0のグローバル変数と引数変数の仕様について説明している文書って、
ネット上に転がってないですか?
転がっていたら、URLを教えて下さい。
以下について知りたいです。
・一つのグローバル変数の配列の最大サイズ(4000バイト程度?)
・引数変数の種類毎の正規化内容(「TEXCOORDなら、-1から1の間に丸めてしまう」とか) >「TEXCOORDなら、-1から1の間に丸めてしまう」
この例は間違ってた>< HLSLとかGLSLってデバッグするの大変なんだけどエミュでいいからトレースとかブレークポイント使えるツールってないかな? あの・・・質問なんですけど
いま自作ゲームでテッセレータを使おうとしててうまくいってないんだが
ディスプレイデバイスが停止しましたって出るときって
よくある原因ってなんかあります? 使い終わったシェーダーの無効化処理をしてない為でした
スレ汚しスマソ 質問失礼します。
Unityのピクセルシェーダーを覚えたいんですけど、まず何からやれば良いのでしょうか?
右も左も分からないので、道しるべを置いていただければ、ありがたいです。。。 >>566
Cg(nVidiaの奴)関係書籍(凄く高い)がまず必読かなぁ フレームワークで簡単に3Dゲームを、というのは幻想
「博士論文をW*kiped*aのコピペで書こう」みたいなもの
てかシェーダってフレームワークに依存するか?
これだからフレステは >>567
買ってみます!
ありがとうございます。 DirectX9のHLSLだと、ビットシフトが出来ないんだな
論理積なんかは、テクスチャ産婦ら使って、事前に論理演算した結果を参照する方法があるみたいだが 簡単にお金が稼げる方法興味ある人だけ見てください。
グーグル検索⇒『来島のモノノリウエ』
N31KGHFK8W ■ このスレッドは過去ログ倉庫に格納されています