問題タブ [specular]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
704 参照

c++ - Directx9スペキュラーマッピング

ジオメトリの一部の鏡面反射マップとして使用するテクスチャをロードし、C ++を使用してDirectx9でレンダリングするにはどうすればよいですか?

参照できるチュートリアルや基本的な例はありますか?

0 投票する
2 に答える
847 参照

directx - DirectX 10 で HLSL エフェクトに情報を送信するにはどうすればよいですか?

鏡面照明を計算するために、ビュー ベクトルを ID3D10Effect 変数に送信したいと考えています。実行中の DirectX プログラムから HLSL にベクトルまたはスカラー値を送信するにはどうすればよいですか? 私は何かをしたい

0 投票する
1 に答える
2952 参照

opengl - GLSL / OpenGL 2.1:ユニフォームを使用した鏡面照明

そこで、OpenGLの照明システムを使用せずに素晴らしい照明を実装するための探求を始めました。Phong拡散照明の実装に成功しました。スペキュラーは私に問題を与えています。

使用しているOpenGL定数が占めるスペースを知る必要があります。これは、OpenGL定数が誤って変換されているように見え、照明の不具合が発生するためです。

Phongディフューズシェーダーを正常にロードして実行することにより、C++コードに問題がないことを確認しました。ただし、C ++コードが無効なデータをシェーダーに渡している可能性があります。これは、私が心配していることの1つです。コメントと、シェーダーに直接関連するすべてのC ++コードをシェーダーに貼り付けます(ただし、問題はシェーダーにあると90%確信しています)。

これらの画像では、光源は大きな点であり、軸が示されています。ライトは、イコスフィアの周りをy=0で回転しています。

これがディフューズなので、モデルが何であるかがわかり まだピクセルごとに行っていないことに注意してください... ます...ピクセルごとの処理はまだ行っていないことに注意してください...

ソースに示されているように、これがフレネル照明です... ライトとカメラの間ではなく、照らされた面がライトにどのように向いているかに注意してください 照らされた面が、ライトとカメラの間のどこかではなく、ライトにどのように向いているかに注意してください。

これがBlinn-Phongで、これに30を掛ける必要がありました... 照らされた面が光源の方を向いていることにもう一度注意してください 照らされた面が光源にどのように向いているか、またこれを達成するためにSpecular factor(S)に30を掛ける必要があることに注意してください。

頂点シェーダーソース(「dirlight.vs」からロード)

フラグメントシェーダーソース(「dirlight.fs」からロード)

C++のメイン初期化からの抜粋...

C++メインループからの抜粋...

0 投票する
1 に答える
634 参照

opengl - OpenGLで鏡面反射色を取得するには?

私のコードは、鏡面反射光コンポーネント以外のすべてに対して機能します。

鏡面反射を無視しているように見えますが、色、テクスチャ座標、位置などはすべて完全に問題ありません。

これはライトとマテリアルを使用していません。固定頂点パイプライン。残念ながら、現時点ではシェーダーはオプションではありません。

glGetError() は、どの時点でもエラーを報告しません。

0 投票する
0 に答える
1607 参照

android - glslでの未定義のNaNまたはInf値の処理。matherrorsを考える

glslシェーダー(GL 2.0)の厄介なバグをまだ取り除くことができませんでした...この問題の解決策を3週間以上探しましたが、何も見つかりませんでした。グーグルには多くの例と説明がありますが、どれも実際には機能しません。

まず、これが私のfragmentshaderコードです。その後、問題が正確に何であるかを説明します。

次の変数値があります。ここで、

  • pl_はpointlightvaluesであり、
  • dl_は方向性のある光の値であり、
  • mat_diffは、マテリアルの拡散値です。
  • また、mat_spec、mat_elum、mat_shineは、マテリアルスペキュラー、エリミネーション、シャイニーネス用です。
  • N =通常、
  • V =ビュー-ベクトルから頂点、
  • L =光-ベクトルから頂点、
  • R =反射ベクトル、
  • D =光距離、
  • DF =光をブレンドするための距離係数、
  • S =計算された鏡面反射率、
  • F = L、Nからの内積
  • およびdiff、計算されたdiffuse/spec-vectorsのspecvectorsum。

ここで、次の問題が発生します。ポイントライト自体が完全に実行されます。ディレクショナルライト自体も完璧に動作します。しかし、一緒にそれらはあまりうまく機能しません。問題を正確に説明します。最大で4つのポイントライトと4つのディレクショナルライトがあります。テストには、4つのポイントライトと1つのディレクショナルライトを使用しました。

  • forループの計算で指向性ライトをコメントアウトすると、次の結果が得られます。 指向性ライトは無効、ポイントライトは有効
  • ポイントライトのforループをコメントアウトすると、次の結果が得られます。 ポイントライトは無効になり、代わりに指向性ライトが有効になります
  • 両方のforループを有効にした場合、次のようになります。 両方の光源タイプが可能です

指向性ライトは完全に無視されているようです。代わりに、車はポイントライトだけで照らされます。

だから、私が見つけたもの:forループ、ポイントライト->指向性ライトの順序を、dirlights->ポイントライトの代わりに変更すると、効果が入れ替わります:ポイントライトは無視され、指向性ライトが計算されます。

私もわかったことですが、この問題は次の問題である必要があります:pow()関数またはゼロ除算ですが、次のコード行をコメントアウトすると、次のようになります。

私は次の結果を得ることができます:

仕様+=コメントアウトされた行

->拡散色は、ポイントライトと指向性ライトに対して通常どおり計算されます。

そこで、この問題を解決する方法を考えました。なぜなら、0を0で表すと、数学エラーが発生するからです。ゼロ除算も....未定義の値を回避するにはどうすればよいですか?

isnan()またはisinf()関数はandroid-glslに存在しないようです。

アンディの解決策または私がもっとうまくできることを教えてください、これはうまくいくでしょうか?少しでもお役に立てれば幸いです。これは私を3週間から怒らせます。ヘルパーに感謝します!:)

コードの詳細: https ://github.com/Chrise55/Llama3D

クリス

0 投票する
1 に答える
2300 参照

glsl - glsl (lwjgl) のフォン鏡面照明

私は現在、gsl と Phong モデルを使用して、球体に鏡面照明を作成しようとしています。

これは私のフラグメントシェーダーがどのように見えるかです:

sunPosition は移動しておらず、値 (2.0f、3.0f、-1.0f) に設定されています。

問題は、鏡面反射計算が正しかった場合に想定されるように、画像が何も見えないことです。

これはどのように見えるかです: http://i.imgur.com/Na2C6.png

このコードにアンビエント/エミッシブ/デフューズ ライティングがない理由は、スペキュラー ライトの部分を最初に動作させたいからです。

助けてくれてありがとう!

編集:@Darcy Raynerそのindeadは、まだ正しくないものであると思われます...

現在のコードは次のようになります。

頂点シェーダー:

フラグメント シェーダー:

そして、球は次のようになります。

-->画像リンク<--

太陽の位置: sunPosition = new Vector(12.0f, 15.0f, -1.0f);

0 投票する
1 に答える
1327 参照

macos - OpenGL オブジェクトは、Mac OS X 10.6 では光沢/光沢がありますが、10.5 では光沢がありません。なんで?

Mac OS X 10.5 以降用の OpenGL スクリーンセーバーを作成しました。これは、マーチング キューブを使用して作成された回転するハートを示しています。Snow Leopard (10.6) を実行している私の黒の 13.3 インチ開発 Macbook で問題なく動作し、素晴らしく光沢があります。

しかし、新しい Macbook Pro で leopard (10.5) を実行しているときに試してみると、ハートは光沢がありません。アンビエント/ディフューズ ライトのみで照らされているように見えますが、スペキュラ ライトはありません。ライトのスペキュラ コンポーネントを 0 に設定したかのようです。新しい Macbook には Nvidia グラフィック カードが搭載されています。10.6 を実行している古いものには Intel XMA3100 が搭載されています。

これが私のOpenGL初期化コードです。心臓はマーチング キューブを使用して作成され、法線ベクトルも計算しています。

実際の描画コードは次のようになります。

鏡面照明の違いの理由は何ですか? 一部のグラフィックス カードでは鏡面照明がサポートされていないだけですか? どんなポインタでも大歓迎です。

0 投票する
1 に答える
2606 参照

opengl - ディフューズ/スペキュラー ライティングが機能しないのはなぜですか?

私は OpenGL プログラムを実行しており、ジオメトリを表示していますが、すべて「フラット」で、1 つの灰色のトーンであり、拡散シェーディングや鏡面反射はありません。

陰影なしの鳥居

写真は 3 つの鳥居で、それぞれ四角形のストリップでできています。シェーディングが表示されるはずですが、表示されません。私は何を間違っていますか?

頂点と法線を設定するコードは次のとおりです (draw_torus()表示リストを作成するために呼び出されます)。

頂点の順序に問題がありますか?

以下は、表示リストが作成される init 関数の一部です。

setMaterial() は次のことを行います。

初期化中にも行われる照明は次のとおりです。

draw 関数で表示リストが呼び出される場所は次のとおりです。

この「glx ハック」の完全な .c ソース ファイルはこちらです。違いが生じる場合に備えて、このコードはxscreensaverのコンテキストにあります。

0 投票する
1 に答える
5066 参照

performance - Matlabはベクトルの反射を計算します

画像の鏡面ハイライト(フォン)を計算する必要があります。法線ベクトルと「光ベクトル」が与えられます。ここで、光の反射を計算する必要があります-反射光ベクトルを取得するために、光ベクトルを法線ベクトルに反転させる効率的なmatlab関数はありますか?

I spec = k s * I *(r * v)p

ここ lで、は光ベクトル
nは表面の法線ベクトルです
r反射ベクトル
vは反射点から視聴者までのベクトルは
p光沢です

0 投票する
1 に答える
1450 参照

three.js - バンプ マップとスペキュラ マップのエクスポート

新しい MeshPhongMaterial Bump と Specular ハイライトを見てきました。それらをゲーム エンジンに取り込むのが待ちきれません。現在、Pythonコンバーターを使用してOBJファイルを.jsファイルに変換しています。ただし、リリース 51 のエクスポーターは、これらのマテリアルを処理していないようです。

また、ほとんどのメッシュに 2 つ以上のマテリアルがあり、MeshFaceMaterial を使用していることも懸念しています。

MeshPhongMaterial に変更すると、複数のテクスチャが壊れますか? これを実現するには、別のエクスポーターを使用する必要がありますか? Bump および Specular マップを使用して .3ds ファイルから変換する最適なワークフローは何ですか? この話題が落ち着くまでしばらく待ってみようかな。