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

2
一部のゲームでは、壁を通して光が輝いているのはなぜですか?
一部のゲームでは、ビデオの品質を高レベルに設定しても、壁を通して光が輝いています。 最近プレイしたゲームの例としては、Borderlands 2(ミサイル爆発)とCall of Cthulhu(ランタン。ゲームではUnreal Engine 4も使用されています)があります。 これはバグですか、パフォーマンス上の理由がありますか? Borderlands 2:の例:https : //youtu.be/9bV83qA6_mU?t=419(数回ですが、すぐに) ボーナスの質問:後者の場合、問題を解決するためにレイトレーシングを安価に使用する方法はありますか?高価なRTは間違いなく問題を解決したと思いますが、この特定の問題を解決するために「安価な」形式で使用できるのではないかと思います。

3
レイトレーシングにおけるBRDFおよび球座標
標準のフォン/ブリンフォン照明モデルを使用するレイトレーサーを開発しました。物理ベースのレンダリングをサポートするように変更しているので、さまざまなBRDFモデルを実装しています。現在、私はOren-NayarとTorrance-Sparrowモデルに集中しています。これらはそれぞれ、入射wiおよび出射wo光の方向を表すために使用される球面座標に基づいています。 私の質問は次のとおりです。wiとwoをデカルト座標から球座標に変換する正しい方法はどれですか。 私はここで報告された標準の公式を適用していますhttps://en.wikipedia.org/wiki/Spherical_coordinate_system#Coordinate_system_conversions 私のベクトルが原点の尾にないので、私が正しいことをしているのかわかりませんデカルト座標系ですが、光線とオブジェクトの交点を中心とします。 ここに私の現在の実装を見つけることができます: https://github.com/chicio/Multispectral-Ray-tracing/tree/brdf/RayTracing/RayTracer/Objects/BRDF https://github.com/chicio/Multispectral-Ray-tracing/blob/brdf/RayTracing/RayTracer/Math/Vector3D.cpp 誰かがwiとwoのベクトルをデカルト座標から球座標に変換する正しい方法の説明を手伝ってくれる? 更新 ここにコードの関連部分をコピーします。 球面座標計算 float Vector3D::sphericalTheta() const { float sphericalTheta = acosf(Utils::clamp(y, -1.f, 1.f)); return sphericalTheta; } float Vector3D::sphericalPhi() const { float phi = atan2f(z, x); return (phi < 0.f) ? phi + 2.f * M_PI : phi; } オーレンナヤル OrenNayar::OrenNayar(Spectrum<constant::spectrumSamples> reflectanceSpectrum, float …

4
可変長ループがGPUシェーダーに与える影響
デモシーンなど、GPU内で手続き型コンテンツをレンダリングするのが一般的です(画面いっぱいに1つの四角形を描画し、GPUにピクセルを計算させる)。 レイマーチングが人気です: これは、GPUがピクセルごとに不明な数のループ反復を実行していることを意味します(ただし、のような上限を設定できますmaxIterations)。 可変長ループがあると、シェーダーのパフォーマンスにどのような影響がありますか? 単純なレイマーチングの擬似コードを想像してみてください。 t = 0.f; while(t < maxDist) { p = rayStart + rayDir * t; d = DistanceFunc(p); t += d; if(d < epsilon) { ... emit p return; } } さまざまな主流のGPUファミリ(Nvidia、ATI、PowerVR、Mali、Intelなど)はどのように影響を受けますか?頂点シェーダー、特にフラグメントシェーダー? どのように最適化できますか?

1
高い鏡面反射力を持つ鏡面バンディング
DirectXでのレイトレーシングにいくつかの問題があり、特にスペキュラに関する深刻なバンディングの問題があります。高い鏡面反射力(8以上)でバンディングが始まります。これがHDR / LDRの問題なのか、それとも法線や他のベクトルなど、他の何かに関連している可能性があるのでしょうか。 更新 更新については以下をご覧ください。 これは、球体上のブリンフォンに関連するシェーダーコードです。 float3 hitPoint = thisRay.origin + thisRay.direction * bestHit.hitT; float3 normal = normalize(hitPoint - spheres[bestHit.hitID].center); float3 toLight = pointLights[0].position.xyz - hitPoint; float d = length(toLight); toLight = normalize(toLight); float diffuse = max(dot(normal, toLight), 0.0f); float3 v = normalize(thisRay.origin - hitPoint); float3 h = normalize(v + …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.