0

後処理シェーダーで変換して、球形のフラットなフルスクリーンテクスチャを表示したいと思います。

シェーダーのテクスチャ座標にprojectionmatrixを適用する必要があると思います。

私はこのウェブサイトを見つけました:http://www.songho.ca/opengl/gl_projectionmatrix.htmlは、projectionmatrixの内部について多くを学びます。

しかし、どうすればそれを適用できますか?投影行列の3行目をテクスチャ座標に乗算し、計算されたz値を追加して球形にする必要があると思いました。しかし、私の努力は何の結果も示していません。

編集:ここに同じ問題があります:http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/2008-April/009765.html

4

1 に答える 1

1

テキスト座標に投影行列を掛けた後、遠近法を分割して3Dから2Dに移動する必要があると思います(テクスチャは2Dであるため)。これは、シャドウマッピングの場合と同じです。

// in fragment shader:
vec4 proj = uniformModelViewProjMatrix * tex_coords;
proj.xyz /= proj.w;
proj.xyz += vec3(1.0);
proj.xyz *= 0.5;
vec4 col = texture2D(sampler, proj.xy);

またはhttp://www.ozone3d.net/tutorials/glsl_texturing_p08.php(for)を見てtexture2DProjください

于 2013-01-19T15:45:37.643 に答える