タグ付けされた質問 「pbr」

2
拡散反射光と鏡面反射の用語を適切に組み合わせる方法
私が理解する限り、BRDFでは、フレネル項は、光子が表面に衝突したときに反射または屈折する確率を示しています。 反射した光子は鏡面反射の項に寄与し、屈折した光子は拡散の項に寄与します。したがって、物理的な方法で、材料の色に対する光の寄与を決定するとき、私はただ書きたいと思う: // Assuming for example: // diffuse = dot(L, N); // specular = pow(dot(H, N), alpha) * (alpha + 2.0) / 8.0; // fresnel = f0 + (1.0 - f0) * pow(1.0 - dot(E, H), 5.0); color = lightIntensity * Lerp(diffuse * albedo, specular, fresnel); しかし、このように書かれたのを見たことがありません。フレネル項に従って重み付けされた鏡面反射項を見ましたが、拡散反射光項は見ていません。主に参照されているPBRに関する記事で、セバスチャンラガルドは、拡散項の重み付けにを使用することは正しくないと述べています。(1 − F)(1−F)(1 - …

1
PBR実装と混同される
私は素晴らしい数学の世界を発見しており、PBRと命名で巨大な壁にぶつかっているので、いくつか質問があります:BRDFを理解する限り、マテリアルが光にどのように反応するか(直接的な光と反射の受信)を説明します。しかし、「クックトーランス」では、反射については何も表示されません。統合方法がわからないため、拡散光と反射しか得られません。 「Oren-Nayar」のような異なる「拡散用語」についてたくさん読んだことがありますが、DFGノミネーターの異なる「D」のようなCook-Torranceの一部ですか?鏡面反射計算なしで置き換えますか? ブレンダーアーティストの背景から「GGX」について多くのことを読みましたが、それはぼやけた反射を引き起こすものだと思っていましたが、間違っているようで、今ではマイクロファセットなどのさまざまな状況でこのGGX用語を見つけていますこのチュートリアルの配布 つまり、問題は「Oren-Nayar」と「GGX」と「Cook-Torrance」が互いにどのように関係しているのか(それらがある場合)、それらのアルゴリズムに「vec3リフレクション」をどのように統合するかです。 前に言ったように、私は数学の初心者なので、あなたの答えが「数学が重い」なら、あなたの方程式のglsl / hlslバージョンを書いてください。 PS:私の質問はぼやけていることは理解していますが、主題を理解するのと同じくらいぼやけています。
13 glsl  pbr 

1
光沢をラフネスに、またはその逆に変換するために受け入れられている方法は何ですか?
最新のレンダラーのほとんどは物理ベースのマテリアルを使用しており、そのモデルはしばしば粗さに対してパラメーター化されています。これがレンダラーの場合に常に当てはまるわけではないため、従来のアセットには、粗さの概念がないことがよくあります。代わりに、「光沢」または「鏡面反射力」を共通のマテリアルパラメータと見なします。 2つの間に正確な変換がないことを理解していますが、鏡面反射光のパワーまたは光沢がわかっているマテリアルの粗さを取得するための経験則/おおよその方法はありますか?
12 specular  brdf  pbr 

2
物理ベースのBRDFでは、フレネル係数の計算にどのベクトルを使用する必要がありますか?
フレネル係数のよく知られたシュリック近似は、次の方程式を与えます。 F=F0+(1−F0)(1−cos(θ))5F=F0+(1−F0)(1−cos(θ))5F=F_0+(1 - F_0)(1 - cos(\theta))^5 そしては、表面法線ベクトルとビューベクトルの内積に等しい。cos(θ)cos(θ)cos(\theta) 実際の表面法線または半ベクトルHを使用する必要があるかどうかは、まだはっきりしていません。物理ベースのBRDFでどちらを使用する必要がありますか。その理由は何ですか。NNNHHH さらに、私が理解している限り、フレネル係数は、特定の光線が反射または屈折する確率を与えます。そのため、なぜこの式をBRDFで引き続き使用できるのかを理解するのに苦労しています。 この観察は、が来る場所だと私に思わせる傾向がありますが、代表的な法線のフレネルが実際のすべての法線のフレネルを積分することと同等であることは私には明らかではありません。HHH
11 brdf  pbr  integral  fresnel 

3
(拡散/アルベド)テクスチャとしての16ビットハーフフロートリニアHDR画像?
だから私はしばらくこれについて考えていて、グーグルで答えを探しましたが、成功しませんでした。 すべてのテクスチャがJPEGなどの8ビットLDR画像である場合、レンダリング時に露出制御/トーンマッピングと競合する可能性はありません。これは、低ダイナミックレンジによってクランプされているため、実際には存在しないテクスチャの詳細を公開する必要がある画像のレンダリング露出を調整する場合です。したがって、テクスチャをHDRイメージとして保存し、.exrとして保存して、16ビットハーフフロートの線形カラースペースで適切なカラー表現を取得することは意味がありません(32ビット「フル」フロートはやりすぎかもしれません)。より詳細で正しい色の値を取得するには、GIとカラーブリードの計算方法にも影響があると思います。 それとも、必要なレンダリングの最終結果はおそらく何らかの方法で写真を撮ったときのテクスチャの露出レベルと同じになるので、それは単に必要ではないのですか?また、カメラは主に12〜14ビットで撮影するので、テクスチャを複数回露光し、それらすべてを1つのHDRIにつなぎ合わせるために余分な作業をすべて行う必要があります。 編集: 明確にするために、私は主にこれに興味を持っていますリアルタイムゲームエンジン。

1
ラジオメトリック単位またはフォトメトリック単位でレンダリングしますか?
従来のレンダリングでは、すべての計算を、完全なスペクトルレンダリングとして、またはコンポーネント単位(XYZ、RGBなど)として、放射測定単位で行うのが一般的です。 ただし、最新のレンダリングでは、より物理ベースのモデルが追加されるため、アーティストは、たとえばルーメン内の光の強度など、より一般的な測光単位で値を指定できるので便利です。 パイプラインをすべて1つのタイプのユニットに維持するには、次のいずれかを実行できます。 発光効率を使用して、フォトメトリック単位をラジオメトリック単位に変換します レンダリングパイプライン全体をフォトメトリック単位に保つ セバスチャン・ラガルドは、彼のSiggraph 2014プレゼンテーションの「フロストバイトをPBRに移動」のコースノートでこのアイデアを非常によく示しています。 私の質問はこれらです: フォトメトリック単位でのみレンダリングすることに不利な点はありますか? 私が知る限り、測光ユニットは人間の目に偏った放射測定ユニットにすぎません。最終的な画像を目で確認することを考えると、これは問題ではないと思います。 Frostbiteは、RGBコンポーネント単位のエンジンです。スペクトルレンダラーには、フォトメトリック単位のみでレンダリングすることによる追加の欠点がありますか?

1
GGXジオメトリ用語の正しい形式
レイトレーサーにマイクロファセットBRDFを実装しようとしていますが、いくつかの問題が発生しています。私が読んだ多くの論文や記事は、ビューと半ベクトルの関数として部分幾何学用語を定義しています:G1(v、h)。しかし、これを実装すると、次の結果が得られました。 (一番下の列は1.0〜0.0の粗さの誘電体、一番上の列は1.0〜0.0の粗さの金属です) エッジの周りに奇妙なハイライトがあり、nl == 0の周りにカットオフがあります。これがどこから来ているのか本当にわかりませんでした。レンダーを確認するための参照としてUnityを使用しているので、シェーダーソースをチェックして、何が使用されているかを確認し、ジオメトリ用語が半ベクトルによってパラメーター化されていないことを確認できます!だから私は同じコードを試しましたが、半分のベクトルの代わりに表面の法線をマクロに使用し、次の結果を得ました: 私の訓練されていない目には、これは望ましい結果に非常に近いようです。しかし、私はこれが正しくないと感じていますか?私が読んだ記事の大部分は半分のベクトルを使用していますが、すべてを使用しているわけではありません。この違いの理由はありますか? ジオメトリ用語として次のコードを使用します。 float RayTracer::GeometryGGX(const Vector3& v, const Vector3& l, const Vector3& n, const Vector3& h, float a) { return G1GGX(v, h, a) * G1GGX(l, h, a); } float RayTracer::G1GGX(const Vector3& v, const Vector3& h, float a) { float NoV = Util::Clamp01(cml::dot(v, h)); float a2 = …

2
ハーフベクトルが拡散BRDFフレネル計算で使用されないのはなぜですか?
私は現在、アールハモンJrのプレゼンテーションPBR拡散照明(GGX + Smithマイクロサーフェス用)(現在は[PBR、p.XYZ]と呼ばれています)を使用しており、ブレントバーレイの物理ベースのシェーディング(現在は[DIS 、p。XYZ]をクリックして、適切な拡散BRDFコンポーネントを取得します。この2つをフレネル項と組み合わせることに行き詰まっています。 私が使用するベクトルと角度の簡単な紹介: ωiωi\omega_iは光ベクトルです ωoωo\omega_oはビューベクトルです ωnωn\omega_nは通常のマクロジオメトリです θiθi\theta_iはと間の角度ですωiωi\omega_iωnωn\omega_n θoθo\theta_oはと間の角度ですωoωo\omega_oωnωn\omega_n θhθh\theta_hはと間の角度ωnωn\omega_nωhωh\omega_h αhiαhi\alpha_{hi}はと間の角度ωiωi\omega_iωhωh\omega_h αhoαho\alpha_{ho}はと間の角度(この区別は明確にするためです)ωoωo\omega_oωhωh\omega_h αhαh\alpha_hは等しいので、、いずれかの角度ですαhiαhi\alpha_{hi}αhoαho\alpha_{ho} ここで、はフレネルファクターのないスペキュラーコンポーネントのBRDF項であり、はフレネルスタッフのない拡散コンポーネントの項なので、フレネルファクターはとして記述されます。[PBR、p.105]は、拡散光が2回透過されると述べています。したがって、フレネルコンポーネントは2倍する必要があります。[PBR、p。106]は続けて、フレネルの法則はsymmetrixであると言います。つまり、出入りは方向に依存しないことを意味します(つまり、いったん空気から材料に入って、いったん空気から出ても問題ありません)。今、私は(が入るためのフレネルであり、が材料を出るためのフレネルである)と仮定するとrsrsr_srdrdr_dF(angle)F(angle)F(angle)F1F1F_1F2F2F_2 (1−F1(αhi))∗(1−F2(αho))(1−F1(αhi))∗(1−F2(αho))(1-F_1(\alpha_{hi}))*(1-F_2(\alpha_{ho})) F1F1F_1とは同じ関数であり、とは同じ角度なので、F2F2F_2αhiαhi\alpha_{hi}αhoαho\alpha_{ho} (1−F(αh))2(1−F(αh))2(1-F(\alpha_h))^2 これはbrdfつながります:fff f=F(αh)∗rs+(1−F(αh))2∗rdf=F(αh)∗rs+(1−F(αh))2∗rdf = F(\alpha_h) * r_s + (1-F(\alpha_h))^2 * r_d しかし[PBR、p.113]と[DIS、p.14]の両方が f=F(αh)∗rs+(1−F(θi))∗(1−F(θo))∗rdf=F(αh)∗rs+(1−F(θi))∗(1−F(θo))∗rdf = F(\alpha_h) * r_s + (1-F(\theta_i))*(1-F(\theta_o)) * r_d Shirelyらによるこの種の計算を使用するための元の論文と同様に。1997.私はこれを取得できません。なぜそれらはマイクロファセット角度からマクロ角度に変わるのですか?マイクロファセット角度はエネルギー会話につながります F∈[0,1]F∈[0,1]F \in [0, 1] ⇒(1−F)∈[0,1]⇒(1−F)∈[0,1]\Rightarrow(1-F) \in [0, 1] ⇒(1−F)2∈[0,1]⇒(1−F)2∈[0,1]\Rightarrow(1-F)^2 \in [0, …
8 brdf  pbr  diffuse  fresnel 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.