0

法線を含むテクスチャがあります。

ここに画像の説明を入力

目の位置: 頂点シェーダー:

vec4 posEye = modelViewMatrix *  vec4(in_Position.xyz, 1.0f);
fs_PosEye = posEye.xyz;

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

 // calculate normal from texture coordinates
vec3 coords;
coords.xy = gl_PointCoord * 2.0 - 1.0;
float r = dot(coords.xy, coords.xy);

if(r>1.0){ 
    discard;
}

coords.z = sqrt(1.0-r);

//calculate eye position    
vec4 pixelPos = vec4(fs_PosEye + normalize(coords)*pointRadius,1.0f);

ここに画像の説明を入力

EDIT(abs()カラーベクトルを使用):

ここに画像の説明を入力

と深さ:

ここに画像の説明を入力

スカイボックスをレンダリングするために使用する立方体テクスチャもあります (上の写真でその一部を見ることができます)。

それらを使用して反射効果を作成する必要があります。

テクスチャは以前はフレーム バッファを使用してレンダリングされていましたが、現在はフラグメント シェーダで次のように使用しています。

vec3 N = texture(u_normaltex,fs_texcoord).xyz;
float not_blurred_depth = texture(u_depthtex,fs_texcoord).r;
vec3 position = texture(u_positiontex,fs_texcoord).xyz;

私はこのようなことをしようとしました(チュートリアルに基づいて):

vec4 vCoords = vec4(reflect(position, N), 0.0);
vec4 refl_color = texture(u_cubemaptex, vCoords.xyz);

しかし、私は反射の適切な効果を得ることができません。

私はこのようなものを見ることができます:

ここに画像の説明を入力

間違っています。ボールを上から見ると、反射した空しか見えないはずです。また、どこからボールを​​見ても同じスカイボックスの断片を見ることができます。

適切な数式を作るのを手伝ってくれませんか? どのマトリックスを使用する必要がありますか (存在する場合)、適切なキューブ テクスチャ座標を計算するにはどうすればよいですか?

4

0 に答える 0