tweaking lights and shit

This commit is contained in:
Dmitri K 2016-11-10 20:30:21 -05:00
parent 52d547bd1e
commit 9c79eca90d
2 changed files with 30 additions and 30 deletions

View File

@ -24,14 +24,14 @@ vec4 calcDirLight(vec4 tex, vec3 fPos, vec3 fNorm) {
vec3 nviewDirection = normalize(fPos); vec3 nviewDirection = normalize(fPos);
// Compute diffuse component // Compute diffuse component
float diff = 0.65 * max(0.0, dot(nfNormal, LightDirection)); float diff = 0.4 * max(0.0, dot(nfNormal, LightDirection));
// Compute specular component // Compute specular component
vec3 Rl = normalize(-LightDirection+2.0*nfNormal*dot(nfNormal,LightDirection)); vec3 Rl = normalize(-LightDirection+2.0*nfNormal*dot(nfNormal,LightDirection));
float spec = 0.1*pow(max(0.0, dot(Rl, nviewDirection)), 16); float spec = 0.4*pow(max(0.0, dot(Rl, nviewDirection)), 16);
// Compute ambient component // Compute ambient component
float amb = 0.05; float amb = 0.02;
//return vec4(0); //return vec4(0);
return vec4(tex.xyz * (amb + diff + spec), tex.w); return vec4(tex.xyz * (amb + diff + spec), tex.w);
@ -39,25 +39,25 @@ vec4 calcDirLight(vec4 tex, vec3 fPos, vec3 fNorm) {
vec4 calcPointLight(vec4 tex, vec3 fPos, vec3 fNorm, int i) { vec4 calcPointLight(vec4 tex, vec3 fPos, vec3 fNorm, int i) {
// Get lighting vectors // Get lighting vectors
vec3 LightDirection = normalize(fPos - pointLight[i]); vec3 LightDirection = normalize(pointLight[i] + fPos);
vec3 nfNormal = normalize(fNorm); vec3 nfNormal = normalize(fNorm);
vec3 nviewDirection = normalize(fPos); vec3 nviewDirection = normalize(fPos);
// Attenuation // Attenuation
float distance = length(pointLight[i] - nviewDirection); float distance = length(nviewDirection - pointLight[i] - fPos) / 3;
float attenuation = 1.0f;// / (distance * distance); float attenuation = 0.5 + 1 / max(0.25, distance * distance);
// Compute diffuse component // Compute diffuse component
float diff = 0.5 * max(0.0, dot(nfNormal, LightDirection)); float diff = 0.3 * max(0.0, dot(nfNormal, LightDirection));
// Compute specular component // Compute specular component
vec3 Rl = normalize(-LightDirection+2.0*nfNormal*dot(nfNormal,LightDirection)); vec3 Rl = reflect(-LightDirection, fNorm);
float spec = 0.5 * pow(max(0.0, dot(Rl, nviewDirection)), 32); float spec = 0.5 * pow(max(0.0, dot(Rl, nviewDirection)), 32);
// Compute ambient component // Compute ambient component
float amb = 0; float amb = 0.2;
return vec4(1 * pointLightCol[i].xyz * attenuation * (amb + diff + spec), pointLightCol[i].w); return vec4(pointLightCol[i].xyz * attenuation * (amb + diff + spec) * tex.xyz, pointLightCol[i].w);
} }
void void
@ -80,9 +80,9 @@ main()
vec3 nviewDirection = normalize(fPosition); vec3 nviewDirection = normalize(fPosition);
fColor = calcDirLight(texColor, fPosition, fNormal) fColor = calcDirLight(texColor, fPosition, fNormal)
+ calcPointLight(texColor, fPosition, fNormal, 0) + calcPointLight(texColor, fPosition, fNormal, 0)/4
+ calcPointLight(texColor, fPosition, fNormal, 1) + calcPointLight(texColor, fPosition, fNormal, 1)/4
+ calcPointLight(texColor, fPosition, fNormal, 2); + calcPointLight(texColor, fPosition, fNormal, 2)/4;
} else { } else {
fColor = texColor * ifColor; fColor = texColor * ifColor;
} }

View File

@ -259,16 +259,16 @@ void Viewer::init()
Shape* s3 = new Sphere(); Shape* s3 = new Sphere();
s1->transform.rotate(360 * 1/3,0,1,0); s1->transform.rotate(360 * 1/3,0,1,0);
s1->transform.translate(0.5,1,0); s1->transform.translate(1,0,0);
s1->transform.scale(0.3); s1->transform.scale(0.05);
s1->setColor(*c1); s1->setColor(*c1);
s2->transform.rotate(360 * 2/3,0,1,0); s2->transform.rotate(360 * 2/3,0,1,0);
s2->transform.translate(0.5,1,0); s2->transform.translate(1,0,0);
s2->transform.scale(0.3); s2->transform.scale(0.05);
s2->setColor(*c2); s2->setColor(*c2);
s3->transform.rotate(360 * 3/3,0,1,0); s3->transform.rotate(360 * 3/3,0,1,0);
s3->transform.translate(0.5,1,0); s3->transform.translate(1,0,0);
s3->transform.scale(0.3); s3->transform.scale(0.05);
s3->setColor(*c3); s3->setColor(*c3);
// uncomment this and the quaternion transformation in draw() // uncomment this and the quaternion transformation in draw()
@ -276,8 +276,8 @@ void Viewer::init()
// cube->transform.translate(3, 0, 0); // cube->transform.translate(3, 0, 0);
selection = new SceneGroup(); selection = new SceneGroup();
selection->addChild(s1);; selection->addChild(s1);
selection->addChild(s2);; selection->addChild(s2);
selection->addChild(s3); selection->addChild(s3);
SceneGroup *c = new SceneGroup(); SceneGroup *c = new SceneGroup();
@ -370,7 +370,7 @@ void Viewer::initShaders()
qDebug() << "Unable to find m_shader location for" << "pointLightCol[2]"; qDebug() << "Unable to find m_shader location for" << "pointLightCol[2]";
m_program->setUniformValue(m_isPhongLoc, true); m_program->setUniformValue(m_isPhongLoc, true);
m_program->setUniformValue(m_drawTextLoc, true); m_program->setUniformValue(m_drawTextLoc, false);
s_texture = new QOpenGLTexture(QImage("src/data/skybox.jpg"));/*/ s_texture = new QOpenGLTexture(QImage("src/data/skybox.jpg"));/*/