金属反射

OpenGLプログラミングメモ内検索 / 「金属反射」で検索した結果

検索 :
  • メニュー
    ...射 クック・トランス金属反射 金属反射 カラーシフト 簡易シャドウイング 距離減衰 スポットライト フォグ GLSL テクスチャマッピング GLSL マルチテクスチャ 床面反射 オフスクリーンレンダリング 環境マッピング 投影マッピング シャドウマッピング ソフトシャドウ 水面 バンプマッピング 視差マッピング ディスプレースメントマップ 輪郭線抽出(IDマップ) 輪郭線抽出(深度マップ) 輪郭線抽出(法線マップ) セルシェーディング SSAO ハードウェアスキニング ▲▲▲▲▲ ▼ シェーダー 画像フィルタ偏 色の反転 ぼかしフィルタ ガウスフィルタ モザイク モノトーン セピア調 残像 モーションブラー 輪郭抽出 フォーカスフィルタ ▲▲▲▲▲ ▼ 3Dライブラリ編 Irrlicht編 Irrlichtのインストール ▲▲▲▲▲ ▼ 3...
  • 鏡面反射
    プラスチックや金属など、よく磨きこまれた反射率の高い物体に光が当たると 表面が光り輝いているように見えます。 そのハイライトを表現するのが鏡面反射です。   vertex.shader //フラグメントシェーダーに渡す変数 varying vec3 P;//位置ベクトル varying vec3 N;//法線ベクトル void main(void) {   P = vec3(gl_ModelViewMatrix * gl_Vertex);   N = normalize(gl_NormalMatrix * gl_Normal);   gl_Position = ftransform(); } flagment.shader //頂点シェーダーから受け取る変数 varying vec3 P;//位置ベクトル varying vec3 N;//法線ベクトル void main(void)...
  • 固定機能:鏡面反射
    鏡面反射です。 glLightfv(GL_LIGHT0, GL_SPECULAR, SpecularLight); でスペキュラーライトを設定し、 glMaterialfv(GL_FRONT, GL_SPECULAR, specular); でスペキュラーの反射を設定し、 glMaterialf(GL_FRONT,GL_SHININESS,8); でスペキュラーの指数を設定します。 シェーダーで言うと頂点シェーダーで処理したような品質になります。   ファイル main.cpp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h #define WIDTH 320 #define HEIGHT 240 //回転用...
  • 床面反射
    床面反射です。 床面を半透明で描画し、オブジェクトを床面を境にして 反対側にも描画する事で疑似的に映り込みを表現しています。 brick.png marble.png  vertex.shader varying vec3 P; varying vec3 N; void main(void) {   P = vec3(gl_ModelViewMatrix * gl_Vertex);   N = normalize(gl_NormalMatrix * gl_Normal).xyz;   gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;   gl_Position = ftransform(); } flagment.shader varying vec3 P; varying vec3 N; uniform sam...
  • 環境光
    現実世界では、太陽や照明からの光が様々な物体に反射して光が直接当たらない場所でも 間接的に反射してきた光によってある一定の明るさになっています。 この空間に溢れる光を環境光といいます。 CGでこれを再現するにはラジオシティやグローバルイルミネーションなどがありますが、 計算コストが非常に高く、ゲームなどのリアルタイムな画面更新が求められるプログラムでは とても使う事はできません。 そこで、一般的には割とそれらしく見せるためにシーン全体に影響する一定の色を環境光として 使います。 vec4 ambient = gl_FrontLightProduct[0].ambient; で、OpenGLからアンビエント情報を受け取ります。 これを紐解いていくと、 glLightfv(GL_LIGHT0, GL_AMBIENT, Light); で設定したライトの光の範囲内で glMaterialfv(G...
  • マテリアルの設定
    glEnable(GL_LIGHTING); でライトを有効にしていない時は、glColor4f(赤,緑,青,アルファ); で色を付けていました。 しかし、3Dモデルをそれでやってしまうとのっぺりした、ただの塗りつぶしになってしまいます。 ライトを有効にしている時に、3Dモデルがどのような光の色を反射するか設定するには glMaterialfv(適用する面,光源の種類,反射する色); で材質を設定してあげます。 今回は一定時間でマテリアルを変更するプログラムを作ってみました。   ファイル main.cpp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h #include stdlib.h #define ...
  • 光とは
    光とは、何なのでしょう? ニュートンは光が周波数的な性質があることを知っていたけれども、 光が作る影の周辺が非常にシャープではっきりしていることから 「光は粒子だ!」と考えていました。 グリマルディは、光の「回折」現象を発見、波の動きと似ていることを知りました。 光が粒子だとすると、光が障害物の後ろにも伝わる現象(回折)や、 光が重なると強めあったり弱めあったりする現象(干渉)のしくみを うまく説明できなかったのです。 そこで、ホイヘンスが「光の波動説」を提唱しました。 その後、フレネルとヤングが光は波動であるという事を数学的に証明し出し、 (干渉、反射、屈折)光の波動説が有利になりました。 マクスウェルは電磁波理論を完成させて光は、そうした電磁波の一種である事を 証明しました。 19世紀末には光の現象は波動説でうまく説明できるようになっていました。 アインシュタインは、しかしながら、やは...
  • 拡散照明
    環境光だけではのっぺりとした図にしかなりません。 立体的に見せるには陰影を付けてやらなければなりません。 拡散反射光は光源から入ってくる光を全ての方向に均一に反射します。 紙のようにざらざらとした光沢の少ないものの表現に適しています。 反射する光の量は、入射する光の量に応じて変化し、入射する光の量は 光のあたる場所によって異なるので、物体の形に陰が付きます。 左の画像は頂点シェーダーのみで陰影を付けたものですが、ハイライトの部分に何やら 線のようなものが見えます。これは頂点単位で色の補間が行われているためです。 右の画像は頂点シェーダーで位置ベクトルと法線ベクトルを計算しておき、フラグメントシェーダーに 渡してフラグメントシェーダーで光の計算をしています。 こうするとピクセル単位で色の計算(補間)が行われるので非常に綺麗な結果が得られます。 フラグメントシェーダーに渡す変数は varyin...
  • 3Dシーンの設定と立方体の表示
    『2Dと3Dの描画を切り替える』では3Dシーンの設定をしていませんでした。 何も設定しないとライトや視点などは反映されません。 gluPerspective で視野角とアスペクト比、描画範囲を設定し、 gluLookAt で視点を設定、 glLightfv でライトの設定、 glMaterialfv でライトの反射を設定します。 glutSolidCube(size) で立方体を表示します。   ファイル main.cpp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h #define WIDTH 320 #define HEIGHT 240 //赤 GLfloat red[] = { 1.0, 0.0, 0...
  • .FBXを読み込んでみる3(表示編)
    前回のプログラムはテクスチャ無しで3角ポリゴンの FBX ファイルしか 読み込めませんでした。 今回のプログラムは3角と4角の両方のポリゴンに対応しています。 テクスチャはレイヤー0しか対応していませんが通常の使用には問題ないと 思います。   PNG.h #pragma once #include lodepng.h //テクスチャクラス class TEXTURE{ protected  LodePNG_Decoder decoder;//デコーダ  unsigned char* buffer;//バッファ  size_t buffersize, imagesize;//サイズ public  TEXTURE();  TEXTURE(const char* FileName);//コンストラクタ  void LOAD_PNG(const char* FileName);//P...
  • .FBXを読み込んでみる2(読み込み編)
    それでは実際に FBXSDK を使用してデータを取り出してみようと思います。 まず、fbx20113_fbxsdk_win をインストールして Visual studio にパスを通します。 そして プロジェクトのフォルダに fbxsdk_20113.dll と fbxsdk_20113d.dll を置きます。 使い方は KFbxSdkManager を作成して、 KFbxImporter を作成して、 KFbxImporter にファイルを読み込んで初期化します。 そして、 KFbxScene を作成して、 KFbxScene に KFbxImporter で インポートします。 そして、 KFbxNode を辿って KFbxMesh を探します。 KFbxMesh が見つかったら、そこから各種情報を取り出します。 今回は三角ポリゴンのみでテクスチャ無し、オブジェクト(レイヤー)が一つだ...
  • .OBJを読み込んでみる2(読み込み編)
    では、取りあえず簡単な読み込みプログラムを作ってみます。 今回はテクスチャ無しで、マテリアルも読み込んでいませんが .MQO の読み込みプログラムの時とは違って法線情報が ありますので陰影が表現されています。 box.obj # Created by Metasequoia mtllib box.mtl v -100.000000 100.000000 100.000000 v -100.000000 -100.000000 100.000000 v 100.000000 100.000000 100.000000 v 100.000000 -100.000000 100.000000 v 100.000000 100.000000 -100.000000 v 100.000000 -100.000000 -100.000000 v -100.000000 100.000000 -10...
  • 環境マッピング
    環境マッピングです。 正面の球に部屋を反射させて描画します。 room.xは、ここからダウンロードできます。 右クリックして、名前を付けてリンク先を保存してください。 wall.png vertex.shader varying vec3 P; varying vec3 N; varying vec4 Reflect;  uniform mat4 ViewTranspose;//ビュー変換だけのモデルビュー行列の転置行列 void main(void) {   P = vec3(gl_ModelViewMatrix * gl_Vertex);   N = normalize(gl_NormalMatrix * gl_Normal);   vec3 incident = normalize(P);//入射視線ベクトル   vec3 reflect0 = reflect(incident...
  • .MQOを自力で読み込んでみる2(読み込み編)
    今回は読み込み編という事で、実際に .MQO ファイルを読み込んでみます。 前回の解析編で描画に使うデータがわかりましたのでそれを自作のクラスと 構造体にガンガン詰め込んでみます。 ファイルの読み込みには C++ の fstream を使おうかな?と思ったんですが、 効率があまりよくないので GLmetaseq の旧版を参考に C言語の fscanf_s と fgets を使う事にしました。 GLmetaseq の旧版ではディスプレイリストにガンガン登録して、それをサクッと表示 していますが、私的にはディスプレイリストは使わない方向で行きます。 何故かというと、ワイヤーフレーム表示とか将来的にはスキニングとかもやりたいからです。 #include string #include vector using namespace std; //3つのベクトル struct Vector...
  • .Xを読み込んでみる3(読み込み編)
    では実際にXファイルを読み込んでみます。 今回は読み込み編という事で3角ポリゴンのみです。http //www.geocities.co.jp/Playtown-Spade/7188/こちらのデータを使わせて頂いています。 事前にメタセコイアで3角ポリゴンに変換してテクスチャを PNG 形式に変換しています。 Xファイルのテンプレートを除去しないと読み込みできません。 PNG.h #include lodepng.h //テクスチャクラス class TEXTURE{ protected  LodePNG_Decoder decoder;//デコーダ  unsigned char* buffer;//バッファ  size_t buffersize, imagesize;//サイズ public  TEXTURE();  TEXTURE(const char* FileName)...
  • .MQOを自力で読み込んでみる3(表示編)
    今回は取りあえず、頂点配列で表示してみます。 .MQO の頂点データはインデックスになっていますが UV座標のデータは インデックスにはなっていないので glDrawElements を使うとテクスチャが めちゃくちゃになってしまいます。 仕方が無いので glDrawArrays 用に配列データを作成し直して描画 する事にしました。 今回は取りあえず表示するだけという事で法線やライトなどは省略し、VBOにもしていません。 それとテクスチャに使える画像形式はPNGのみです。今の所。 今後はワイヤーフレーム表示とかにも挑戦してみます。    PNG.h #include lodepng.h //テクスチャクラス class TEXTURE{ protected  LodePNG_Decoder decoder;//デコーダ  unsigned char* buffer;//バッファ  ...
  • .Xの階層メッシュアニメーションを読み込んでみる2
    それでは、実際に階層構造を作って表示してみる事にします。 今回はアニメーションはせずに、ただ単にモデルを表示するだけです。 2分木構造を再帰関数を使ってデータ処理をする場合、return で戻る先を きちんと把握していないとおかしなデータ構造になってしまいます。 再帰関数というのは一つずつネストを深めて行きます。 なので、return すると1階層戻るのではなく 1 NODE 戻ります。 以下の図で説明すると Frame5 から1階層戻る時は 1回の return で 1階層戻りますが、Frame4 から 1階層戻る時は 1回目の return で Frame3 に戻り、2回目の return でFrame2 に戻り、3回目の return で Frame1 に戻って、やっと1階層戻る事になります。 PNG.h #pragma once #include lodepng.h //...
  • .OBJを読み込んでみる3(表示編)
    .OBJ ファイルの読み込みプログラムが完成しましたので公開します。 取りあえず、インデックス化はせずに頂点配列で表示しています。 テクスチャはマテリアルで重複しないようにモデルクラスで保持しています。 完全に重複を避けるにはアプリケーション単位で保持する必要が あると思います。 PNG.h #include lodepng.h //テクスチャクラス class TEXTURE{ protected  LodePNG_Decoder decoder;//デコーダ  unsigned char* buffer;//バッファ  size_t buffersize, imagesize;//サイズ public  TEXTURE();  TEXTURE(const char* FileName);//コンストラクタ  void LOAD_PNG(const char* FileNam...
  • .Xを読み込んでみる4(表示編)
    前回の読み込み編ではテンプレート無しで3角ポリゴンの Xファイルしか 読み込めませんでしたが、今回はテンプレートを読み飛ばし、3角と4角ポリゴンの 両方の Xファイルを読み込めるようにしました。 Xファイルは作成するソフトによって癖がありますので全ての3Dアプリが作る Xファイルに 対応する事はできません。とりあえずメタセコイアが作る Xファイルに対応しています。   PNG.h #include lodepng.h //テクスチャクラス class TEXTURE{ protected  LodePNG_Decoder decoder;//デコーダ  unsigned char* buffer;//バッファ  size_t buffersize, imagesize;//サイズ public  TEXTURE();  TEXTURE(const char* FileName);...
  • .MQOローダ(ワイヤーフレーム表示編)
    ワイヤーフレーム表示です。 最初、 glDrawArrays を使って描画したら遅くて実用的ではありませんでした。 そこで色々、思考錯誤して glMultiDrawArrays を使ったら、割りとそれなりの 速度で描画できるようになったので公開します。   PNG.h #include lodepng.h //テクスチャクラス class TEXTURE{ protected  LodePNG_Decoder decoder;//デコーダ  unsigned char* buffer;//バッファ  size_t buffersize, imagesize;//サイズ public  TEXTURE();  TEXTURE(const char* FileName);//コンストラクタ  void LOAD_PNG(const char* FileName);//PNG読み込み ...
  • ODE:箱の自由落下と地面との衝突判定
    箱が上から落ちてきて、地面でバウンドします。 値を設定するだけで、後は勝手にシミュレーションしてくれます。 ファイル main.cpp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #pragma comment(lib, ode_doubled.lib ) #include GL/freeglut/freeglut.h #include ode/ode.h #include vector using namespace std; #define WIDTH 320 #define HEIGHT 240 #define ODE_MAX_CONTACTS 1024 //ライトの位置 GLfloat lightpos[] = { 2.0, 4.0, 1.0, 0.0 }...
  • 簡易シャドウイング
    平面上に影のように見えるオブジェクトを描画します。 vertex.shader  //フラグメントシェーダーに渡す変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {    P = vec3(gl_ModelViewMatrix * gl_Vertex);    N = normalize(gl_NormalMatrix * gl_Normal);    gl_Position = ftransform();  } flagment.shader  //頂点シェーダーから受け取る変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {    vec3 L = normalize(gl_LightSource...
  • .Xのスキンメッシュアニメーションを読み込んでみる2
    .x のスキンメッシュアニメーションを読み込んで表示します。 このプログラムは box.x 専用です。 わかりやすくするために敢えて、このようにしました。      これで完成ではありません。 法線を再設定してあげないと光の反射具合が変になってしまいます。 詳しくは次回に回します。   font.h #pragma once class GLFONT { public  HFONT Hfont;  HDC Hdc;  GLFONT(wchar_t *fontname, int size);  void DrawStringW(int x,int y,wchar_t *format, ...); }; //コンストラクタ フォント作成 GLFONT GLFONT(wchar_t *fontname, int size) {  Hfont = CreateFontW(        ...
  • オフスクリーンレンダリング
    オフスクリーンレンダリングです。 レースゲームのバックミラーの描画等で使われます。 metasequiaに付属のviolin.mqoを.xに変換して使用しています。violin.xはここからダウンロードして下さい。 右クリックして名前を付けてリンク先を保存でダウンロードできます。 violin.png  vertex.shader varying vec3 P; varying vec3 N; void main(void) {   P = vec3(gl_ModelViewMatrix * gl_Vertex);   N = normalize(gl_NormalMatrix * gl_Normal).xyz;   gl_TexCoord[0] = gl_MultiTexCoord0;   gl_Position = ftransform(); }   flagment.shad...
  • 再びキーフレーム
    長らく道を逸れましたが、ここで再びキーフレームに戻ります。 .Xのアニメーションキーのキータイプ情報 0…回転  w,x,y,zの順にクォータニオンデータ 1…拡大縮小 x,y,zの順に拡大縮小データ 2…平行移動 x,y,zの順に平行移動データ 4…合成行列 回転、拡大縮小、平行移動行列が掛け合わされた4×4行列データ まず、最初に知っておかなくてはならない事があります。 それは、当サイトで使用している Cyberdelia は、合成行列タイプの アニメーションデータは階層構造が正しく生成できないという事です。 詳しくは Cyberdelia に付属のヘルプを参照して下さい。 とは言っても、合成行列でないタイプの方は正しく出力されますので、 それを元に合成行列を作成し、単純なキーフレームアニメーションを表示して みたいと思います。 とりあえず、平行移動行列だけに対応したプログラムを作成...
  • 距離減衰
    距離による光の減衰です。 vertex.shader  //フラグメントシェーダーに渡す変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {    P = vec3(gl_ModelViewMatrix * gl_Vertex);    N = normalize(gl_NormalMatrix * gl_Normal);    gl_Position = ftransform();  } flagment.shader  //頂点シェーダーから受け取る変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {  vec3 L = gl_LightSource[0].position.xyz - P;  f...
  • 線形補間
    さて、前回の「再びキーフレーム」では箱が瞬間移動してしまって いました。 補間がされていないためです。 DirectX SDK 付属のビューワーでは滑らかにアニメーションが 補間されています。 今回はキーフレームとキーフレームの間を線形補間してみようと思います。 ベクトルAとベクトルB間の補間は、求める値をIとすると、 で求める事ができます。 ここでのtは現在のキー位置のパラメーターです。 尚、 0 ≦t≦ 1 で、tが0の時はAと同じ値、tが1の時はBと同じ値に なります。 前回と同じくsample2.xを表示しています。 font.h #pragma once class GLFONT { public  HFONT Hfont;  HDC Hdc;  GLFONT(wchar_t *fontname, int size);  void DrawStringW(int x,in...
  • .Xの階層メッシュアニメーションを読み込んでみる3
    平行移動と同じようにして拡大縮小も線形補間してみました。 新規に作成した sample3.x を表示しています。   font.h #pragma once class GLFONT { public  HFONT Hfont;  HDC Hdc;  GLFONT(wchar_t *fontname, int size);  void DrawStringW(int x,int y,wchar_t *format, ...); }; //コンストラクタ フォント作成 GLFONT GLFONT(wchar_t *fontname, int size) {  Hfont = CreateFontW(         size,      //フォント高さ         0,       //文字幅         0,       //テキストの角度         0,      ...
  • フォグ
    フォグです。 vertex.shader  //フラグメントシェーダーに渡す変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {    P = vec3(gl_ModelViewMatrix * gl_Vertex);    N = normalize(gl_NormalMatrix * gl_Normal);    gl_FogFragCoord = abs(P.z);//フォグ座標    gl_Position = ftransform();  } flagment.shader  //頂点シェーダーから受け取る変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル  uniform int fogMode;   void main(void...
  • スポットライト
    スポットライトです。 vertex.shader //フラグメントシェーダーに渡す変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {    P = vec3(gl_ModelViewMatrix * gl_Vertex);    N = normalize(gl_NormalMatrix * gl_Normal);    gl_Position = ftransform();  } flagment.shader  //頂点シェーダーから受け取る変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル  int numLight = 2;   void main(void)  {  gl_FragColor = vec4(0.0);  floa...
  • 階層ボーンアニメーション
    今回はボーンだけを階層アニメーションさせてみます。 今回も新しく box.x というファイルを作成しています。 スタティックメッシュをボーンが突き抜けていて若干、間抜けな図ですが 順番としてはこれで合っています。 次回からは、このスタティックメッシュを変形させる仕組みを考察してみます。 font.h #pragma once class GLFONT { public  HFONT Hfont;  HDC Hdc;  GLFONT(wchar_t *fontname, int size);  void DrawStringW(int x,int y,wchar_t *format, ...); }; //コンストラクタ フォント作成 GLFONT GLFONT(wchar_t *fontname, int size) {  Hfont = CreateFontW(        ...
  • .Xのスキンメッシュアニメーションを読み込んでみる1
    階層メッシュクラスを継承してスキンメッシュクラスを作成します。 ジョイントは球でボーンは四角錐にしました。 固定機能 スキニング編『スキンメッシュアニメーションの原理1』で 作成した man.x を表示しています。 Cyberdelia と ToyStudio では出力されるXファイルの書式が異なりますので 今回からは Cyberdelia で出力したXファイルには対応しない事にします。 font.h #pragma once class GLFONT { public  HFONT Hfont;  HDC Hdc;  GLFONT(wchar_t *fontname, int size);  void DrawStringW(int x,int y,wchar_t *format, ...); }; //コンストラクタ フォント作成 GLFONT GLFONT(wchar_t *...
  • 法線の再設定
    さて、前回のプログラムでは法線を再設定していないので ライトを有効にするとおかしな描画になってしまいます。 ここで言う法線とは頂点法線の事なので、前回のプログラムで 求められた頂点変換後の頂点座標がそのまま使えます。 一つ注意しないといけないのは頂点法線は正規化してデータに 納めないといけない事です。   font.h #pragma once class GLFONT { public  HFONT Hfont;  HDC Hdc;  GLFONT(wchar_t *fontname, int size);  void DrawStringW(int x,int y,wchar_t *format, ...); }; //コンストラクタ フォント作成 GLFONT GLFONT(wchar_t *fontname, int size) {  Hfont = CreateFontW(...
  • .Xの階層メッシュアニメーションを読み込んでみる4
    .xの階層アニメーションを読み込んで再生するプログラムが完成したので公開します。 クォータニオンの符号の判定には皆さん、苦労されたのではないでしょうか。 ネットで広く公開されているサンプルはほとんどがDirectX用で いちいち転置しなければならなかったり。 左手座標用に作成したアニメーションXファイルはクォータニオンのY軸とZ軸を-1倍しないと OpenGLではおかしな表示になるとか。 回転角度が181度とマイナス179度ではクォータニオンの符号が反転してるけど 同じ回転行列になるとか。 いやはや、手間取りました。 最後に親階層から子階層へ脈々と行列を受け継いで完成です。 『固定機能 階層メッシュアニメーション編』の『階層構造』で作成した sample4.xを表示しています。 尚、Cyberdelia で作成したアニメーションXファイルだけに対応しています。    font.h #pr...
  • GLSL:テクスチャマッピング
    GLSLでテクスチャを描画します。 vertex.shader   //フラグメントシェーダーに渡す変数   varying vec3 P;//位置ベクトル   varying vec3 N;//法線ベクトル    void main(void)   {     P = vec3(gl_ModelViewMatrix * gl_Vertex);     N = normalize(gl_NormalMatrix * gl_Normal).xyz;     gl_TexCoord[0] = gl_MultiTexCoord0;     gl_Position = ftransform();   } flagment.shader   //頂点シェーダーから受け取る変数   varying vec3 P;//位置ベクトル   varying vec3 N;//法線ベクトル   uniform...
  • @wiki全体から「金属反射」で調べる

更新順にページ一覧表示 | 作成順にページ一覧表示 | ページ名順にページ一覧表示 | wiki内検索