• FEATURED

View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

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.

### #1Ilya122  Members

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...

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.

// 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);
}
}


### #2Ilya122  Members

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.