X



【C++】 DirectX初心者質問スレ Part41 【C】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2018/03/23(金) 15:24:12.95ID:1IsbON+l
回答する人も、質問する人も必ず読んでください

これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。


【C++】 DirectX初心者質問スレ Part40 【C】(c)2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1474782237/

>>2リンク
0143デフォルトの名無しさん
垢版 |
2018/08/30(木) 00:13:35.30ID:qBKCuhvw
>>137
Currentは、もうヤダ。
マルチスレッドレンダリングする上で面倒くさい。
って事だと理解している。

命令のキューと整理されれば、プロセッサと同様なメモリ保護も視野に入るし、
とあるシェーダが別プロセスのテクスチャを読める可能性を排除しやすい。
11までのGPUは、そういうのは皆無だろうし、12にもvulkanにもなさそうだしね。

GPUにスワップメモリ、仮想メモリ空間、スワップで逃がすストレージなんかないのだから。
0144デフォルトの名無しさん
垢版 |
2018/09/03(月) 12:41:04.98ID:NxxlWETJ
DirectX9でSetRenderStateを使ってブレンディングする場合
除算ブレンディングはどうやったら良いでしょうか?
加算なら以下で出来ますが。除算がよく判りません。
lpD3DDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
lpD3DDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
0146デフォルトの名無しさん
垢版 |
2018/09/03(月) 21:12:07.01ID:NxxlWETJ
>>145
おしえて!w
0147デフォルトの名無しさん
垢版 |
2018/09/04(火) 05:42:00.75ID:ygKGdo3P
>>144
公式のリファレンスにのってない?
0148デフォルトの名無しさん
垢版 |
2018/09/04(火) 13:02:02.42ID:hJtprqgF
dstをぜろ。srcを色指定にすればいいだけに見える

oc=(tc*dest bc)+(pc*src bc)
tc ターゲット色、pc シェーダ出力色
0153デフォルトの名無しさん
垢版 |
2018/09/11(火) 08:25:36.60ID:vjUQtdrA
ウィジェットのことなら自作だな。
良さそうな小さいのが見当たらない。
ゴリゴリと頂点配列を作って動かしている。
字と背景を別々に作るから、かなり複雑で眠い
0154デフォルトの名無しさん
垢版 |
2018/09/18(火) 04:59:22.14ID:v4BXp/hu
ただのゲーマーだけど聞いていい?
いまだDirectX6使ってるゲーム好きで時々やるんだけど
古いバージョンっていつか切り捨てられて動作しなくなったりする?
Windows10でも動いてるしこれからもずっと動いてて欲しいんだけど。
0155デフォルトの名無しさん
垢版 |
2018/09/18(火) 06:57:41.67ID:PQNDTy/s
directXはCOMテクノロジーがベースだから
古いゲームでも最新ハードの機能が使えるんやで
例えばdx6ゲームでHWTLやテッセレーション
高度なAAや4k解像度適用などなど

ま、今は絶賛開発中なのでしばし待て
22世紀中にはリリースされるよ
0156デフォルトの名無しさん
垢版 |
2018/09/18(火) 07:41:24.70ID:Qxe4285y
>>154
DirectX云々以外のところで動かなくなる。イースとかもうWidows10では互換モードでも起動すらしない
0157デフォルトの名無しさん
垢版 |
2018/09/18(火) 23:07:41.49ID:v4BXp/hu
>>155-156
DirectX自体は互換性があって大丈夫ってことかな?
それ以外で動かなくなる可能性の心配した方がいいってことか。
0158デフォルトの名無しさん
垢版 |
2018/09/19(水) 11:42:50.85ID:PupZqwJJ
誤解が拡散中
0159デフォルトの名無しさん
垢版 |
2018/09/19(水) 22:02:25.18ID:DVXllMcK
DirectXに互換性などはないような。
ただ過去のスタックが残っているだけのこと。
それすらDirect3D9c未満が動くのか?は疑問がある。 ドライバが非対応なんじゃないだろうか。

あと、動画再生時のCODECが非対応で、動画再生できずに堕ちるってのもあるような。
ソフトウェアMIDIもドライバで実現しているのか、Microsoft標準ドライバが実装しているのかも疑問がある。

取り敢えず、過去に買ったWindows 95時代のゲームで動画再生できずに堕ちたゲームは観た事がある。
0160デフォルトの名無しさん
垢版 |
2018/09/19(水) 22:08:06.99ID:DVXllMcK
Windowsは、Windowsのみで機能を実現など出来ていない。
ハードウェアを扱う部分は、メーカーが提供するドライバが核であり、
そこがWindowsの互換性を提供し、メーカーに向けたドライバ要件が担保となっている。

Officeが必要とするドライバ機能がドライバ要件を決定づけていて、
サポート期間中の製品が必要とする部分なら、ドライバも必須となる。
従って、Direct3D関係の機能は、既に9c未満が動く保証はないと思う。
0161デフォルトの名無しさん
垢版 |
2018/09/20(木) 00:02:40.53ID:gdLwWWhU
>>159
ドライバの対応次第ってことかな?
現状ではDirectX6や7や8のゲームは普通に動いてるけど
メーカーがドライバ対応しなくなった時が終わりってこと?
0162デフォルトの名無しさん
垢版 |
2018/09/20(木) 07:52:43.20ID:K+Ua86eW
>>161
ここでウダウダ聞いてもなんの担保にもならんぞ
対応しなくなったら終わりではなく更新されないだけ、それで動き続けるかどうかは神の味噌汁
たまたま動かなくなっただけかもしれない、たまたま動いているだけかもしれない

3DゲームはドライバでなくDirect3DのAPIに対してアクセスしているので
WindowsでDirect3D(の該当バージョン)が態々削除されない限りは互換性はあるとは言える
もちろん削除されなくてもWindowsの更新で内部の挙動が変化してゲームが動かなくなるなんてことはざらにある
0163デフォルトの名無しさん
垢版 |
2018/09/20(木) 10:45:06.47ID:7WHuQIEO
WMが変わった時が一番大きい変化だった気がする
0164デフォルトの名無しさん
垢版 |
2018/09/20(木) 10:51:48.29ID:7WHuQIEO
DWMが変わったタイミングで動かなくなったアプリが増えたっていう意味です
0165デフォルトの名無しさん
垢版 |
2018/09/21(金) 09:48:58.26ID:qOWS4e0S
>>162
互換性自体は結構あるね。
VBのDirectX用のDLLはもうOSに含まれてないけど自前で用意すれば結構動く。
ただ昔のゲームで使われてたカラーキーがもうダメなハードがあるね。
0168デフォルトの名無しさん
垢版 |
2018/09/27(木) 17:39:33.56ID:egrolh38
質問です。
メインスレッドで描画しながら別スレッドでテクスチャを大量に読み込むと
画面がちらつきます。D3DXCreateTextureFromFileを実行した時にちらついてるようです。
ここにコードを書く事が出来ないのでエスパーでおねがいします。
思い当たる原因はありますか?D3DDeviceをスレッドをまたいで参照してたりするからでしょうか?
0169デフォルトの名無しさん
垢版 |
2018/09/27(木) 17:40:00.04ID:egrolh38
age
0170デフォルトの名無しさん
垢版 |
2018/09/27(木) 18:12:40.71ID:lrUHFZkm
ロックするかあらかじめ全部読んでおくか
0171デフォルトの名無しさん
垢版 |
2018/09/27(木) 20:45:06.26ID:PZih89QY
D3DDeviceを
マルチスレッドで使う場合
スレッドセーフで作らんとダメだろう
そこはちゃんとやってるのか?
0172デフォルトの名無しさん
垢版 |
2018/09/27(木) 21:58:29.85ID:ZotRguTd
マルチスレッドモードに設定してないと、Debugモード実行で警告メッセージ出まくらなかったっけ?
それが出てたら、出ないようにするとこから。
0173デフォルトの名無しさん
垢版 |
2018/09/28(金) 00:01:13.37ID:frk51yg8
>>170-172
ありがとうございます。やぱ作り方を不味ってるっぽいっすかね?
言われた事を参考に自分なりに調べてみます。
また何かあったら宜しくお願いします。
0174デフォルトの名無しさん
垢版 |
2018/09/28(金) 08:46:21.34ID:WfDD/blL
ちらつきで疑わしいのは、presentする辺りかな
ディスプレイに表示する描画ターゲットを作り込むときに参照しているテクスチャでもあるんでないかと。
というか複数のスレッドからデバイスコンテキストを触ると蹴られたと思う。

それでもちらつきが一時的な症状ならば、テクスチャ関数が中で排他しているからでなかろうか?

ところでチラツキって具体的な症状としては、どれなんだろう。
・一瞬黒か白が入る
・カクカクしたアニメーションになる
・デジタルノイズが入る
・サブリミナルな絵が入る
・何しにきたんだよ?お前のために決まってるだろ!と友貴に言われる
0175デフォルトの名無しさん
垢版 |
2018/09/28(金) 09:59:25.03ID:frk51yg8
>>174
ありがとうございます。
テクスチャ読み込みした瞬間に「・デジタルノイズが入る」といった感じです。
具体的に言うと「ブロックノイズっぽいものが所々に出る」といった感じです。
症状自体はそこまで酷い訳ではないんですが、チラチラするので気になってます。
一回あたりのノイズのサイズは小さいですね。画面がフルHD時で、128x128くらいです。
0176175
垢版 |
2018/09/28(金) 12:12:50.63ID:frk51yg8
テクスチャ読み込み中は特に自分ではD3DDeviceの書き換えは行っていなかった(と思う)のですが
一応念のために以下みたいなクラスを作って排他処理を徹底したら直りました!
しかも20秒くらいかかってたテクスチャ読み込みが何故か5秒くらいで終わるようになって
いいことずくめでw 最高っす。

class CLockObject {
protected:
CRITICAL_SECTION m_CriticalSection;
public:
CLockObject(){ InitializeCriticalSection(&m_CriticalSection); }
void Lock(void){ EnterCriticalSection(&m_CriticalSection); }
void UnLock(void){ LeaveCriticalSection(&m_CriticalSection); }
~CLockObject(){ DeleteCriticalSection(&m_CriticalSection); }
};


スレッド1
LockObject.Lock();

Direct3D描画処理

LockObject.UnLock();


スレッド2
LockObject.Lock();

テクスチャ読み込み

LockObject.UnLock();
0177デフォルトの名無しさん
垢版 |
2018/09/28(金) 14:01:09.20ID:KnH7gKZy
>>175
その症状ならむしろ巧くマルチスレッドに動いてしまっている、疑いもあるような。
読み込みが未完なテクスチャを読み込めば、瞬間的に変な画素を参照するから、それがノイズに映る。
でも考えにくいので、変な描画、予期していない描画が挟まれて映っている。

あと突っ込まれなかったから自分で言うが
友貴はチラチラじゃなく、ちゃらいだろ。
0178デフォルトの名無しさん
垢版 |
2018/09/28(金) 15:26:49.89ID:frk51yg8
>>177
ありがとうございます。
一応>>176でノイズ自体は解決して読み込み速度も上がったのですが
描画スレッドと別で読み込みスレッドでテクスチャを読み込んでいる時に
今度は排他処理の影響か描画速度がかなり落ちてしまう症状が出てます。
ただ別スレッドにして排他処理をしっかりやって読み込むと読み込み速度は
かなり速くなったので開始時に画面を黒で塗りつぶして一気に読み込む方法をこれでやろうと思ってます。
出来れば描画スレッドの速度が落ちずに読み込めればいいんですがこれでも問題ないかなと。

まとめると以下のような感じですね
1 シングルスレッドで開始時に読み込むと普通に20秒くらいかかる
2 マルチスレッドで排他処理無しで読み込むと描画しながら読み込めるが20秒くらいかかりノイズも発生
3 マルチスレッドで排他処理有りで読み込むと描画速度がかなり遅くなるが5秒ほどで読み込める
0179デフォルトの名無しさん
垢版 |
2018/09/28(金) 16:04:50.25ID:O5kQkBkV
そもそもそのテクスチャは実行時に毎回読まないといけないものなのか?
0180デフォルトの名無しさん
垢版 |
2018/09/28(金) 17:38:36.81ID:TYfa5akj
176の実装だとマルチに動いていない気がする。
クリティカルセクションは、一つのスレッドが入ったら、離れるまでは他のスレッドが待たされる。
つまり並列に実行していない。
真面目に並列度を高めるならば、テクスチャ毎に排他オブジェクトを持たせて、読み込みが完了していないテクスチャを描画ループのスレッドが触ろうとしたら、そいつをまるごとスキップして描画を続けるとかするべきかも。

ジオメトリなんかの単位でアセットを管理しているならば、読み込み完了前のジオメトリに紐付くテクスチャや頂点は描画をスキップする実装。
あとはオフラインサーフェースへの書き込みなんかの単位でまるごとスキップとかもできるかも。
チラツキを予防して、読み込み終わったアセットを段階的に画面に映したいなら、そういったリソース管理が必要。

でも大抵は、そんなことせず、読み込みが全部終わるまでは黒い画面を見せる実装を選ぶと思う。
GPUコアの限界までテクスチャなんかの読み込みスレッドを並列化することを選びそう。
0181デフォルトの名無しさん
垢版 |
2018/09/29(土) 11:09:20.58ID:hzO5ElQi
>>180
ありがとうございます。
なるほど。効率の面ではまだまだ出来る事は色々あるんでしょうね。
ただ複雑になって下手な事して不具合が出ると困るので自分も単純な方法で行こうと思います。
マルチスレッドで読み込むと読み込み速度自体は上がったので排他処理だけしっかりやって
あとは画面を塗りつぶしてそこで一気に読み込む方法を今回は採用しようと思います。
0182デフォルトの名無しさん
垢版 |
2018/09/29(土) 16:02:49.13ID:urX7Wqqu
d3dのヘルプを読むと
マルチスレッドでは
イミディエイトコンテキストは使わずに
別途デバイスコンテキストを作って
描画スレッドではそれを使うようにとあるよ

多分必要なのはそういうところと思う
0184デフォルトの名無しさん
垢版 |
2018/10/03(水) 17:59:08.87ID:3HnGx7Th
1809記念
Direct3D12でコマンドキューにシグナルするタイミング
1.ExecuteCommandList()
2.Present()
一回のコールの度にフェンスの数値をインクリメント(=GPUに処理を実行する契機を与える)
これを怠ると終了契機にフロントバッファをコマンドキューが掴んでる、との例外が出る。

ギットハブのError on shutdownってタイトルのスレッドにも報告されている。英語

取り敢えず、APIマニュアルでこの旨の事柄を書いたページは見つけられなかった。

ただのシェア
0186デフォルトの名無しさん
垢版 |
2018/10/08(月) 01:17:59.94ID:OIFhWgmg
ある画像を別に用意したマスク画像の形でリアルタイムでくり抜きたいです(マスク画像のフチのぼかされてる所も再現したい)。
ただしシェーダーは使わずやりたい。ステンシルとかブレンディングでどうにかなりますか?
リアルタイムでやりたいのでロックして直接弄るとかは無しでお願いします。

フォトショの例ですがこんな事をリアルタイムでやりたい(くり抜かれた画像の余白の部分はアルファ値で透明になるように)
https://helpx.adobe.com/jp/photoshop-elements/kb/cq07050438.html
0187デフォルトの名無しさん
垢版 |
2018/10/08(月) 01:37:54.77ID:LP2GoVYR
(1)マスクをレンダーターゲットのαに書き込み
(2)くり抜き対象画像のブレンディング設定値を工夫して書き込み

でいけるかな?
0188デフォルトの名無しさん
垢版 |
2018/10/08(月) 02:02:38.28ID:OIFhWgmg
>>187
(1)は、アルファチャンネルつきの画像を用意して描画するとして
ARGBのうちAだけが反映されるように(2)でうまく合成するという事になりますかね?
RenderStateはSRCがDESTALPHAにすると(1)の画像のアルファ値が上手く反映されますね。
ただDESTをどの値にしてもARGBのうちのRGBの部分も反映されてしまってフチが黒くなってしまいます(マスク画像が黒い為)。
ARGBのAだけ反映させるにはどうしたらいいでしょうか。
0189デフォルトの名無しさん
垢版 |
2018/10/08(月) 02:21:51.96ID:LP2GoVYR
マスク画像のRGBはオール0(真っ黒)で、Aだけマスクの形となるα値にする。
んで、(1)のときはRGBは加算合成で、AだけSrcをDstにそのまま書き込みってできないかな?
0190デフォルトの名無しさん
垢版 |
2018/10/08(月) 03:05:32.73ID:OIFhWgmg
>>189
加算合成で黒が見えなくなるのは黒のピクセルのAが0になるからじゃないですかね?
RGBはどうやってもなんらかの値を取らないといけないので…
ブレンディングでやるのは無理なんでしょうか…
0191デフォルトの名無しさん
垢版 |
2018/10/08(月) 03:58:31.81ID:OIFhWgmg
>>187
色々やってみたんですが、まずくり抜きたい画像を描画しておき
そのあとにマスク画像として用意した全部黒で真ん中だけ丸くアルファ値ゼロの画像を
上から描画して、最後にその合成された画像を加算アルファで描画すると
余計な部分の黒が全部透明になって理想に近い形になりました。
ただ加算されるので真ん中の描画される部分がちょっとピカピカしてしまいますが。
もうちょっと試行錯誤してみます。
0192デフォルトの名無しさん
垢版 |
2018/10/08(月) 13:27:01.63ID:+5qyKWRv
馬鹿っぽい
0193デフォルトの名無しさん
垢版 |
2018/10/08(月) 14:56:19.98ID:OIFhWgmg
>>192
加算以外で綺麗に抜ける方法教えて頂けないでしょうか?
ブレンディングカラーキーはハードが対応してなかったです。
0194デフォルトの名無しさん
垢版 |
2018/10/08(月) 20:56:30.32ID:/sZzmon7
ステンシルがいいんじゃねーの?
そもそもステンシルって
そういう型抜きをやるための機能だし

ステンシルバッファをゼロクリア
型抜き用画像を描画(描画されたピクセルのみステンシル値インクリメント)
対象の画像描画(ただしステンシル値!=ゼロのピクセルのみ)

こんな感じで
0198デフォルトの名無しさん
垢版 |
2018/10/09(火) 16:30:24.65ID:46xU4Pr2
ボカシが必要なら
マルチテクスチャブレンディングで
いいだろう

シェーダ使わないってんで
D3D9あたりだと思うが
RGBとAを別々に設定出来るし
要望は満たせるだろう
0199デフォルトの名無しさん
垢版 |
2018/10/09(火) 21:27:06.70ID:dz3bRAZk
>>193
ピクセルシェーだでdiscard
0202デフォルトの名無しさん
垢版 |
2018/10/11(木) 08:36:28.94ID:A/mBZEYO
ここまで書いてあれば調べて実装するのは余裕だと思う。
ぼかす部分をアルファ値0.5、落とす部分を0にするだけではないかと。
でもdx9は使いにくいから、せめて11とシェーダーを使うべき。 9だと理解に変な癖が付くから悪い面が多い。
0203デフォルトの名無しさん
垢版 |
2018/10/12(金) 19:21:20.72ID:M/Pzk+yk
頂点配列。というかGPU上のメモリ確保(コミットリソース)は時間掛かるんだな。
d3d12、amdのプロセッサ内蔵GPU、デバッグモードなんだけど、4秒掛かった。
300個、それぞれ600バイトぐらいの頂点配列を確保するのに掛かった時間

と、書いて気づいた。そうかデバッグレイヤーか
0205デフォルトの名無しさん
垢版 |
2018/10/13(土) 13:43:59.70ID:yMYV8KuT
で、デバッグレイヤーを不活性にしたら、めでたくサクサク動きました。
0206デフォルトの名無しさん
垢版 |
2018/10/14(日) 12:50:45.12ID:G4e8iFcg
おめ
0209デフォルトの名無しさん
垢版 |
2018/10/16(火) 22:26:26.55ID:PgSsQcUe
直に触る人が減ったってだけじゃないの??
0210デフォルトの名無しさん
垢版 |
2018/10/17(水) 16:49:45.63ID:6p6LFcpX
DirectShowの質問なんですが動画再生している時に動画の上に図形を表示したいです。
表示中のウィンドウからHDCを取得して描画すれば一応表示できますがちらつきます。
検索してもあまり情報が出てこないので教えてもらえると助かります。
0211210
垢版 |
2018/10/17(水) 17:23:02.52ID:6p6LFcpX
調べてたらテクスチャにして表示すれば簡単に実現できそうだったのでこれでやることにしました。
0213名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2018/10/22(月) 08:15:36.30ID:JtURtT5N
ユニティとアンリアルエンジンの認知度上昇
ハボックのクローズド化
APIの単純化によるアプリケーション実装の複雑化
ポリゴンデータ(アセット)の生産性の低さ
実現に必要となるデバイスの多さ

APIだけでは解決しない課題が多い
なら出来合いレディメードのアセットを簡単に使えるミドルウェアに流れる。

今、d3d12でウィンドウ処理を書いてるけど、 兎に角つまらないのに無駄に複雑になる。
0214デフォルトの名無しさん
垢版 |
2018/10/23(火) 21:25:00.36ID:Q7G3DiI6
ユニティやアンリアルエンジンの開発者にDirectXやOpenGLがいらないかどうか聞いてみてはどうか。
0216デフォルトの名無しさん
垢版 |
2018/10/27(土) 10:26:01.93ID:G+gLlX7z
DirectXで開発ならフルスクラッチ開発になるの?
0218デフォルトの名無しさん
垢版 |
2018/10/27(土) 11:55:15.64ID:R2aCZi1a
消防士が17歳高校生(M)に水着モデルやらまいか?

上半身さわる

逮捕
0219デフォルトの名無しさん
垢版 |
2018/12/05(水) 23:25:50.89ID:4GYg5LKI
codeさんのおかげで影が薄くなりつつある
VisualStudio2019です

相変わらずレガシィなままです
0220デフォルトの名無しさん
垢版 |
2018/12/06(木) 21:25:28.88ID:2emuZ+wP
DirectX9でD3DXLoadMeshHierarchyを実行しているときに画面が固まります。
なのでD3DXLoadMeshHierarchyを別スレッドで呼びたいのですが可能でしょうか?
0221デフォルトの名無しさん
垢版 |
2018/12/07(金) 14:07:41.34ID:lkrG/qbb
VS2017とかにD3D9.hとかまだあるんだな
よくわからんディレクトリだったけど
0222デフォルトの名無しさん
垢版 |
2018/12/12(水) 08:17:42.93ID:yhm3vXF+
最近、D3D12を色々触ってみた感想。
新しく登場したディスクリブタは、リソースに近いものなんだね。
描画パスをかなり綺麗に実装できた。
0225デフォルトの名無しさん
垢版 |
2018/12/25(火) 14:53:10.82ID:3AxwGiO5
ほんそれ
0227デフォルトの名無しさん
垢版 |
2018/12/26(水) 13:12:26.20ID:1qe+8L32
久しぶりにパソコン買い換えたから
OpenGL(+FreeGLUT)かDirectX(VS2017)あたりで遊んでみたい
どっちがおすすめ?
0230デフォルトの名無しさん
垢版 |
2018/12/27(木) 09:45:39.70ID:0qVX2+Xi
UnityはC#だからつまらん
0232デフォルトの名無しさん
垢版 |
2018/12/27(木) 16:17:54.12ID:X03Q+yv7
Unity使ったら負け
0234デフォルトの名無しさん
垢版 |
2018/12/28(金) 19:18:22.51ID:KLVpsqro
MME(MikuMikuEffect)でDirectX9でテッセレーションみたいな感じに
角を滑らかにしようと思っています。LoD等は一切考慮しません。
まず初めにMME自体がMMDに対してAPI HOOKを行っているようで、
d3d9.dllを用意してAPI HOOKでDirectX11に横流しするというのは諦めました。
(既存のd3d9.dllがどういう動きをしているか把握しないとならないため)

StreamSourceという機能でなんか角を滑らかにするような動作を
実現してくれてるようにも見えるのですが、
MSDNのDirectX9の開発者向けFAQには
「頂点シェーダは、頂点の作成や破棄を行うことはできません。」
とも記載があって、素人がちょっと調べてできるならとっくに誰かがやってるかな…
やっぱり無理なのか。とも考えています。

今までDirectXやHLSLに全くかかわった事が無かったので、
何かしら実現のためのヒントを頂けたら幸いです。
0239デフォルトの名無しさん
垢版 |
2018/12/29(土) 00:34:11.08ID:5EjDFocT
みんな鯖鯖していて気持ち良いねこのスレ
0240デフォルトの名無しさん
垢版 |
2018/12/29(土) 00:36:15.93ID:5X2fG6f6
局面分解に用いる頂点配列はパッチプリミティブを必須とする。(一般的なトライアングルリストではない)
局面分解するMMEもトライアングルリストだろうから、そこはクリアできそうに思うが、問題はテッセレート回路は9だと非対応じゃないかと思う。
9cならジオメトリシェーだがあるから、ソフトウェアで模倣は難しくないと思うが、かなり面倒で制限月になる。
その上でかなり計算回数が増えるから、フレームレートを落とすと思われる。

ノートパソコンあたりのGPUだと10万ポリゴン、1パスでフレームレートは12ぐらいまで落ちる。
そもそもテッセレートしても人形の肌は綺麗にならない。
美を感じるのは素材配置の比率で決まる。
テッセレートは単なる頂点追加(固定間隔での頂点追加。つまり足し算)。

はなからハイポリゴンを法線マップにベイクした方が綺麗で早く、効率がよい。

と、昔やったときに結論づけた。
ただ工夫の余地はある。
0241デフォルトの名無しさん
垢版 |
2018/12/29(土) 00:51:14.24ID:5X2fG6f6
簡単に言えば、単純に頂点を増やしただけでは、陰影のリアリティを増やすことに寄与するが、美しくはならない。
曲線のギザツキを抑えることで綺麗にはなるが、それなら単にレンダリングターゲットの面積を広げた方が楽で早い。

今のピクセルは、まだまだ荒い。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況