0

コードとシェーダーで照明を設定しましたが、現在持っているクワッド以外は何も見えません。照明が機能せず、どこが間違っているのか本当にわかりません。

クワッドを 90 度回転させて平らに横たえ、コードでこのようにライティングを行ったテクスチャを持つクワッドがあります...

    // Set light direction in model space
PVRTVec4 vLightDirModel;
vLightDirModel =  modelView.inverse() * PVRTVec4(0.57735f, 0.57735f, 0.57735f, 0);

glUniform3fv(m_ShaderProgram.auiLoc[eLight], 1, &vLightDirModel.x);

// Set eye position in model space
PVRTVec4 vEyePosModel;
vEyePosModel = modelView.inverse() * PVRTVec4(0, 0, 0, 1);

glUniform3fv(m_ShaderProgram.auiLoc[eEyePos], 1, &vEyePosModel.x);

ここに私のシェーダーがあります

垂直シェーダー:

attribute highp   vec3  inVertex;
attribute mediump vec2  inTexCoord;


uniform highp   mat4  MVPMatrix;
uniform mediump vec3  LightDir;
uniform mediump vec3  EyePos;

varying mediump vec3  EyeDir;
varying lowp    float  specIntensity;
varying mediump vec2  TexCoord;

const mediump float  cShininess = 10.0;

void main()
{
    // Transform position
    gl_Position = MVPMatrix * vec4(inVertex,1.0);

    // Calculate direction from eye position in model space
    mediump vec3 EyeDir = normalize(EyePos - inVertex);

        // Specular lighting
    // We ignore that N dot L could be negative (light coming 
    // from behind the surface)
    mediump vec3 halfVector = normalize(LightDir + EyeDir);
    lowp float NdotH = max(dot(inNormal, halfVector), 0.0);     
    specIntensity = pow(NdotH, cShininess);

    TexCoord = inTexCoord;
}

そして、これが私のフラグシェーダーです

均一なサンプラー2D 反射テックス;

varying mediump vec2  TexCoord;
varying lowp    float specIntensity;



//This gets updated within the main code
uniform highp float Time;

void main()
{   
    lowp vec3 refColor = texture2D(reflectionTex, TexCoord).rgb;
    gl_FragColor =  vec4(refColor + specIntensity, 1.0);
}
4

1 に答える 1