Jump to content

  • Log In with Google      Sign In   
  • Create Account


Vertex shader problems and Fragment shader


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
1 reply to this topic

#1 Ilya122   Members   -  Reputation: 109

Like
0Likes
Like

Posted 21 August 2013 - 10:21 AM

I've started to learn openGL one month ago , I've proceeded now with Shaders. 

I have a vertex shader that does not calculate lighting... It just show me weird things...

thats my shader:

 

VertexShader:

uniform vec3 lightPos[1];
float density =0.009;


void main(void)
{
    // normal MVP transform
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;


    vec3 N = normalize(gl_NormalMatrix * gl_Normal);
    vec4 V = gl_ModelViewMatrix * gl_Vertex;
    vec3 L = normalize(lightPos[0] - V.xyz);
    vec3 H = normalize(L + vec3(0.0, 0.0, 1.0));
    const float specularExp = 128.0;


    // calculate diffuse lighting
    float NdotL = max(0.0, dot(N, L));
    vec4 diffuse = gl_Color * vec4(NdotL);


    // calculate specular lighting
    float NdotH = max(0.0, dot(N, H));
    vec4 specular = vec4(0.0);
    if (NdotL > 0.0) 
        specular = vec4(pow(NdotH, specularExp));


    // calculate 2nd order exponential fog factor
    const float e = 2.71828;
    float fogFactor = (density * length(V));
    fogFactor *= fogFactor;
    fogFactor = clamp(pow(e, -fogFactor), 0.0, 1.0);


    // sum the diffuse and specular components, then
    // blend with the fog color based on fog factor
    const vec4 fogColor = vec4(0.5, 0.8, 0.5, 1.0);
    gl_FrontColor = mix(fogColor, clamp(diffuse + specular, 0.0, 1.0), 
                        fogFactor);
}

Images of the result:

http://tinypic.com/view.php?pic=34fe35k&s=5

http://tinypic.com/view.php?pic=20itemr&s=5

 

Yes. It's the same scene.

I'm moving my scene with modelview matrix (not projection), for example if I go back I move the whole scene forward.

With fog calculations only It works nice. 

-------------------------------------------------------

I have trouble understanding Fragment shader image processing. 
I'm learning with openGL superbible 4th edition, trying to figure out why he calculates offsets and uses a Scene texture.

Fragment shader:

// blur.fs//
// blur (low-pass) 3x3 kernel


uniform sampler2D sampler0;
uniform vec2 tc_offset[9];


void main(void)
{
    vec4 sample[9];


    for (int i = 0; i < 9; i++)
    {
        sample[i] = texture2D(sampler0, 
                              gl_TexCoord[0].st + tc_offset[i]);
    }


//   1 2 1
//   2 1 2   / 13
//   1 2 1


    gl_FragColor = (sample[0] + (4.0*sample[1]) + sample[2] + 
                    (4.0*sample[3]) + sample[4] + (4.0*sample[5]) + 
                    sample[6] + (4.0*sample[7]) + sample[8]) / 13.0;
}

and the code that generates offsets:(CPP CODE)

  xInc = 1.0f / (GLfloat)textureWidth;    yInc = 1.0f / (GLfloat)textureHeight;


    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            texCoordOffsets[(((i*3)+j)*2)+0] = (-1.0f * xInc) + ((GLfloat)i * xInc);
            texCoordOffsets[(((i*3)+j)*2)+1] = (-1.0f * yInc) + ((GLfloat)j * yInc);
        }
    }

Can someone explain me more about this? Thank you :)

 

 



Sponsor:

#2 Ilya122   Members   -  Reputation: 109

Like
0Likes
Like

Posted 26 August 2013 - 12:02 PM

Up.

This is kind of important to me. 






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS