法線を含むテクスチャがあります。
目の位置: 頂点シェーダー:
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);
しかし、私は反射の適切な効果を得ることができません。
私はこのようなものを見ることができます:
間違っています。ボールを上から見ると、反射した空しか見えないはずです。また、どこからボールを見ても同じスカイボックスの断片を見ることができます。
適切な数式を作るのを手伝ってくれませんか? どのマトリックスを使用する必要がありますか (存在する場合)、適切なキューブ テクスチャ座標を計算するにはどうすればよいですか?