質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

Q&A

解決済

2回答

688閲覧

影を作るときにwで割る理由 Wの意味

apa

総合スコア68

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

0グッド

0クリップ

投稿2020/07/02 01:25

編集2020/07/02 03:10

影を作るときに
float3 shadowCoord = input.SdwCoord.xyz / input.SdwCoord.w;
上記のような処理がどの影のシェーダーを見ても書かれております。
そもそもwはプロジェクト変換後視錐台の拡大率なので
zをwで割ると奥行きがなくなるのはわかります。
ただなぜXY座標も割るのかが各サイトを見てもどうしてもわかりません。

もし上記の内容をわかる方おりましたらかみ砕いておしえていただけると助かります。

疑問1 なぜXYZをwで割る必要があるのか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

なんでwで割るか?

HLSL使用

頂点シェーダーでWVP変換後に吐き出されたSV_POSITIONは自動的にwで割る処理が内部で組み込まれるが、
SV_POSITION以外のデータはWで割られずに吐き出されるため自分でわってやる必要があるため

投稿2020/07/04 13:30

apa

総合スコア68

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

話がよくわかりませんが,ひょっとしたらそれは 同次座標 なのではないでしょうか.

投稿2020/07/02 01:49

fana

総合スコア11996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

apa

2020/07/02 03:09

同次座標調べてみましたが 自分の悩みとしては、なぜXYZをwで割る必要があるのかということです。
fana

2020/07/02 03:29

「同次座標 w」とか,「同次座標 w 意味」とか,まぁそんなワードで検索すれば 何となく説明している箇所が見つかると思います. http://marupeke296.com/DXG_No55_WhatIsW.html とか.
apa

2020/07/02 03:45

これを見たうえでわからないんですよね まだまだ浅いところが多いと思いますが・・・
fana

2020/07/02 03:58

うーん,私は数学者でもないですし,むしろそういう方面はダメなタイプなので… おそらく{間違った,ダメな,足りてない,etc}解釈なんじゃないかとは思いますが,私のイメージを(2次元の例で)書くと,こんなですね: 2次元の座標データを(x,y)を扱っている.このとき, (媒介変数をwとして)3次元の直線 (w*x, w*y, w) を考える. この3次元直線と,元の2次元データ点との間の関係は,「直線と,z=1平面との交点(のx,y座標が)2次元データ点」という関係. ↓ この直線に何らかの変換を行う(変換結果もまた直線であるような変換を). ↓ この変換結果に対応した2次元データ点の座標は,前記の方法で取り出せる.(それはz成分でx成分とy成分を除すことである)
fana

2020/07/02 04:01

(この手の話を専門的に(?)扱っている人が他にたくさんいると思うので,もっとまともな人の回答に期待されたい)
episteme

2020/07/02 05:43

しろーと考えですけど: 無限遠点から照射される光が落とす影であれば、本体と影は同じ大きさ。 つまり視錐台の拡大率は影に対しては1。 なので視錐台によるサイズ補正をチャラにするため拡大率で割る。
apa

2020/07/02 06:03

無限遠点というのはどうゆうことでしょう 影を表現する場合はライトの座標は決まっております。(カメラみたいな役割なので)
apa

2020/07/02 06:07

脳みそがまとまりました ライトがどこまで離れているかわからないから 割るって感じの解釈ですかね?
apa

2020/07/02 06:31 編集

xyz を wで割る = near farでの拡大が無効になる と 奥行きがない2D画像(全体的につぶれた)になり Z自体もつぶれる?ので距離の比較ができない気がします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問