git-svn-id: svn://db.shs.com.ru/libs@446 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -151,6 +151,8 @@ bool loadShaders(__GLShaderProgram__ * prog, const QString & name, const QString
|
||||
|
||||
|
||||
void setUniformMatrices(__GLShaderProgram__ * prog, QMatrix4x4 proj, QMatrix4x4 view, QMatrix4x4 prevproj, QMatrix4x4 prevview) {
|
||||
if (!prog) return;
|
||||
if (!prog->isLinked()) return;
|
||||
QMatrix4x4 mvpm = proj * view;
|
||||
QMatrix4x4 pmvpm = prevproj * prevview;
|
||||
QMatrix3x3 nm = view.normalMatrix();
|
||||
@@ -169,6 +171,8 @@ void setUniformMatrices(__GLShaderProgram__ * prog, QMatrix4x4 proj, QMatrix4x4
|
||||
|
||||
|
||||
void setUniformMap(__GLShaderProgram__ * prog, QString map_name, const Map & map, int channel, int def_channel) {
|
||||
if (!prog) return;
|
||||
if (!prog->isLinked()) return;
|
||||
prog->setUniformValue(("qgl_Material." + map_name + ".offset").toLatin1().constData(), map.color_offset);
|
||||
prog->setUniformValue(("qgl_Material." + map_name + ".amount").toLatin1().constData(), map.color_amount);
|
||||
prog->setUniformValue(("qgl_Material." + map_name + ".map").toLatin1().constData(), map.bitmap_id > 0 ? channel : def_channel);
|
||||
@@ -176,6 +180,8 @@ void setUniformMap(__GLShaderProgram__ * prog, QString map_name, const Map & map
|
||||
|
||||
|
||||
void setUniformMaterial(__GLShaderProgram__ * prog, const Material & mat) {
|
||||
if (!prog) return;
|
||||
if (!prog->isLinked()) return;
|
||||
QGLCI
|
||||
GLfloat mat_diffuse[4] = {1.0f, 1.0f, 1.0f, 1.0f};
|
||||
mat_diffuse[0] = mat.color_diffuse.redF();
|
||||
@@ -218,6 +224,8 @@ void setUniformLights(__GLShaderProgram__ * prog, const QVector<Light*> & lights
|
||||
" mat4 shadowMatrix;\n"
|
||||
*/
|
||||
void setUniformLight(__GLShaderProgram__ * prog, Light * light, QString ulightn, const QMatrix4x4 & mat, int shadow) {
|
||||
if (!prog) return;
|
||||
if (!prog->isLinked()) return;
|
||||
QMatrix4x4 m = mat * light->worldTransform();
|
||||
QVector4D pos(0, 0, 0, 1.), dir(light->direction);//, dir0(light->dir0), dir1(light->dir1);
|
||||
pos = m * pos;
|
||||
|
||||
Reference in New Issue
Block a user