git-svn-id: svn://db.shs.com.ru/libs@58 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2015-12-03 14:54:31 +00:00
parent 86c101eb79
commit edfd396059
5 changed files with 31 additions and 54 deletions

View File

@@ -67,7 +67,9 @@ const char qgl_structs[] =
" float quadraticAttenuation;\n"
" sampler2DShadow shadow;\n"
//" sampler2D shadowColor\n"
" mat4 shadowMatrix;\n"
//" mat4 shadowMatrix;\n"
" vec4 shadowDir0;\n"
" vec4 shadowDir1;\n"
"};\n"
"struct QGLMap {\n"
" float offset;\n"
@@ -215,7 +217,7 @@ void setUniformLights(QGLShaderProgram * prog, const QVector<Light*> & lights, c
*/
void setUniformLight(QGLShaderProgram * prog, Light * light, QString ulightn, const QMatrix4x4 & mat, int shadow) {
QMatrix4x4 m = mat * light->worldTransform();
QVector4D pos(0, 0, 0, 1.), dir(light->direction);
QVector4D pos(0, 0, 0, 1.), dir(light->direction), dir0(light->dir0), dir1(light->dir1);
pos = m * pos;
dir = (mat * dir).normalized();
double ang_start = light->angle_start / 2., ang_end = light->angle_end / 2.;
@@ -235,5 +237,8 @@ void setUniformLight(QGLShaderProgram * prog, Light * light, QString ulightn, co
prog->setUniformValue((ulightn + ".quadraticAttenuation").toLatin1().constData(), GLfloat(light->decay_quadratic));
prog->setUniformValue((ulightn + ".shadow").toLatin1().constData(), shadow);
prog->setUniformValue((ulightn + ".shadowColor").toLatin1().constData(), shadow);
prog->setUniformValue((ulightn + ".shadowMatrix").toLatin1().constData(), light->shadow_matrix);
prog->setUniformValue((ulightn + ".shadowDir0").toLatin1().constData(), (mat * dir0).normalized());
prog->setUniformValue((ulightn + ".shadowDir1").toLatin1().constData(), (mat * dir1).normalized());
//qDebug() << light->direction << light->dir0 << light->dir1;
//prog->setUniformValue((ulightn + ".shadowMatrix").toLatin1().constData(), light->shadow_matrix);
}