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

2
Cook-Torrance BRDFをトレースするパス
- 「ので、長い記事のために申し訳ありませんが、私はそのように行うことを好む悪魔は細部にある。」:) 私はスクラッチからパストレーサーを書いており、完全に拡散した(ランバート)表面に対してうまく機能しています(つまり、ファーネステストは-少なくとも視覚的に-それがエネルギーを節約しており、レンダリングされた画像がミツバレンダラーで生成されたものと一致することを示しますパラメーター)。現在、いくつかの金属表面をレンダリングするために、オリジナルのCook-Torranceマイクロファセットモデルの鏡面反射用語のサポートを実装しています。しかし、このBRDFは受け取ったエネルギーよりも多くのエネルギーを反映しているようです。以下のサンプル画像を参照してください。 上の画像:ミツバリファレンス(正しいと仮定)画像:直接光サンプリング、重要度半球サンプリング、最大パス長= 5、32層化spp、ボックスフィルター、表面粗さ= 0.2、RGBによるパストレーシング。 上の画像:実際のレンダリング画像:ブルートフォースナイーブパストレース、均一な半球サンプリング、最大パス長= 5、4096層化spp、ボックスフィルター、表面粗さ= 0.2、RGB。レンダリング設定に関していくつかの違いはありますが、レンダリングされたイメージが前に示した参照に収束しないことは明らかです。 私はそれが実装の問題ではなく、レンダリング方程式フレームワーク内でのCook-Torranceモデルの適切な使用に関する問題だと思う傾向があります。以下に、鏡面反射光BRDFをどのように評価するかを説明します。適切に行っているかどうか、そしてそうでない場合はその理由を知りたいです。 重要な詳細を説明する前に、レンダラーは非常に単純であることに注意してください。1)総当たり攻撃ナイーブパストレーシングアルゴリズムのみを実装します。直接光サンプリング、双方向パストレーシング、MLTはありません。2)すべてのサンプリングは、交点の上の半球で均一です-重要なサンプリングはまったくなく、拡散サーフェスでもありません。3)光線経路の最大長は5に固定されています-ロシアンルーレットなし; 4)放射輝度/反射率はRGBタプルで通知されます-スペクトルレンダリングはありません。 クックトーランスマイクロファセットモデル 次に、スペキュラBRDF評価式を実装するためにたどったパスを作成しようとします。レンダリング方程式ですべてが開始 pは表面での交点であります、W oは視線ベクトルであり、wは私Lo(p,wo)=Le+∫ΩLi(p,wi)fr(wo,wi)cosθdωLo(p,wo)=Le+∫ΩLi(p,wi)fr(wo,wi)cos⁡θdω L_o(\textbf{p}, \mathbf{w_o}) = L_e + \int_{\Omega} L_i(\textbf{p}, \mathbf{w_i}) fr(\mathbf{w_o}, \mathbf{w_i}) \cos \theta d\omega pp\textbf{p}wowo\mathbf{w_o}wiwi\mathbf{w_i}光線ベクトルは、ある沿って出射放射輝度であるW 、O、L iが時輝度入射するPに沿ってW Iとのcos θ = N ⋅ W iが。LoLoL_owowo\mathbf{w_o}LiLiL_ipp\textbf{p}wiwi\mathbf{w_i}cosθ=n⋅wicos⁡θ=n⋅wi\cos \theta = \mathbf{n} \cdot \mathbf{w_i} 上記の積分(つまり、レンダリング方程式の反射項)は、次のモンテカルロ推定器1で近似できます。 ここでpは、サンプリングベクトルwkの分布を記述する確率密度関数(PDF)です。1N∑k=1NLi(p,wk)fr(wk,wo)cosθp(wk)1N∑k=1NLi(p,wk)fr(wk,wo)cos⁡θp(wk) \frac{1}{N} \sum_{k=1}^{N} \frac{ L_i(\textbf{p}, …

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

1
Microfacet BRDFを実装しようとしていますが、結果画像が間違っています
マイクロファセットBRDFモデルを実装しようとしています。セバスチャンラガルドのスライドを読んでいます。コードに数式を実装しましたが、結果の画像が間違っていると思います。 黄色は素材のベースカラーです。鏡面色は正しく見えるように赤です。 私のコード: // Fragment Shader #version 330 core in vec3 Position; in vec2 TexCoord0; in vec3 Normal; in vec3 Tangent; out vec4 FinalColor; uniform vec3 uCameraPosition; // init value: vec3(0, 0, 5) #define PI 3.1415926f #define EPSILON 10e-5f #define saturate(value) clamp(value, 0.0f, 1.0f); float BRDF_Lambert(float NdotL) { return NdotL; …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.