VC++、OpenGLの、SDLGLSL
単一クワッドジオメトリの間でスムーズなシェーディングを達成するための方法がある場合、私は疑問に思って。今、私の点光源で陰影が滑らかに見えますが、輝度は顔の対角線細分[/]
に沿って上昇します。照明は、基本的には頂点間では見えません。
これは左から右に光が移動するように何が起こるかである
Iが表面を横切って光を移動すると、それは一貫してこれを行います。各頂点で最も明るくなり、そこからぼやけます。
私はより細かい放射状の色合いを得るために細分化を余儀なくされましたか?またはこれを回避する方法がありますか?
ヴェール
varying vec3 vertex_light_position;
varying vec3 vertex_normal;
void main()
{
vertex_normal = normalize(gl_NormalMatrix * gl_Normal);
vertex_light_position = normalize(gl_LightSource[0].position.xyz);
gl_FrontColor = gl_Color;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
FRAG
varying vec3 vertex_light_position;
varying vec3 vertex_normal;
void main()
{
float diffuse_value = max(dot(vertex_normal, vertex_light_position), 0.0);
gl_FragColor = gl_Color * diffuse_value;
}
誰もが疑問に思っている場合に私のジオメトリ:
glBegin(GL_QUADS);
glNormal3f(0.0f, 0.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(pos_x, pos_y - size_y, depth);
glTexCoord2f(1.0f, 1.0f); glVertex3f(pos_x + size_x, pos_y - size_y, depth);
glTexCoord2f(1.0f, 0.0f); glVertex3f(pos_x + size_x, pos_y, depth);
glTexCoord2f(0.0f, 0.0f); glVertex3f(pos_x, pos_y, depth);
glEnd();
0ここで
は、私が使用していますシェーダがあります
その画像は非常に小さいです。あなたは大きな大きな写真を置くことができますか? –
これは1:1です。私はシリーズをアップロードしてより理にかなっています。 – grep
シェーダが指向性ライトを使用しているようです。平坦な面上の指向性ライト(減衰なし)は、均一な*ライティング(サーフェス上のすべての点で同じ光強度)を生成します。それは起こっていないので、何かが間違っている必要があります。 –