Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/gpu/intern/gpu_material.c')
-rw-r--r--source/blender/gpu/intern/gpu_material.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c
index 44ff8d12dff..a86852d6c19 100644
--- a/source/blender/gpu/intern/gpu_material.c
+++ b/source/blender/gpu/intern/gpu_material.c
@@ -34,14 +34,10 @@
#include "MEM_guardedalloc.h"
-#include "DNA_image_types.h"
#include "DNA_lamp_types.h"
-#include "DNA_listBase.h"
#include "DNA_material_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
-#include "DNA_texture_types.h"
-#include "DNA_view3d_types.h"
#include "DNA_world_types.h"
#include "BKE_anim.h"
@@ -103,7 +99,7 @@ struct GPULamp {
Object *par;
Lamp *la;
- int type, mode, lay;
+ int type, mode, lay, hide;
float dynpower, dyncol[3];
float power, col[3];
@@ -256,7 +252,7 @@ void GPU_material_bind(GPUMaterial *material, int oblay, int viewlay, double tim
for(nlink=material->lamps.first; nlink; nlink=nlink->next) {
lamp= nlink->data;
- if((lamp->lay & viewlay) && (!(lamp->mode & LA_LAYER) || (lamp->lay & oblay))) {
+ if(!lamp->hide && (lamp->lay & viewlay) && (!(lamp->mode & LA_LAYER) || (lamp->lay & oblay))) {
lamp->dynpower = lamp->power;
VECCOPY(lamp->dyncol, lamp->col);
}
@@ -995,6 +991,10 @@ static void do_material_tex(GPUShadeInput *shi)
else
GPU_link(mat, "set_value_one", &tin);
}
+
+ if(tex->type==TEX_IMAGE)
+ if(mat->scene->r.color_mgt_flag & R_COLOR_MANAGEMENT)
+ GPU_link(mat, "srgb_to_linearrgb", tcol, &tcol);
if(mtex->mapto & MAP_COL) {
GPUNodeLink *colfac;
@@ -1221,6 +1221,9 @@ void GPU_shaderesult_set(GPUShadeInput *shi, GPUShadeResult *shr)
mat->obcolalpha = 1;
GPU_link(mat, "shade_alpha_obcolor", shr->combined, GPU_builtin(GPU_OBCOLOR), &shr->combined);
}
+
+ if(mat->scene->r.color_mgt_flag & R_COLOR_MANAGEMENT)
+ GPU_link(mat, "linearrgb_to_srgb", shr->combined, &shr->combined);
}
GPUNodeLink *GPU_blender_material(GPUMaterial *mat, Material *ma)
@@ -1287,11 +1290,12 @@ void GPU_materials_free()
/* Lamps and shadow buffers */
-void GPU_lamp_update(GPULamp *lamp, int lay, float obmat[][4])
+void GPU_lamp_update(GPULamp *lamp, int lay, int hide, float obmat[][4])
{
float mat[4][4];
lamp->lay = lay;
+ lamp->hide = hide;
copy_m4_m4(mat, obmat);
normalize_m4(mat);
@@ -1332,7 +1336,7 @@ static void gpu_lamp_from_blender(Scene *scene, Object *ob, Object *par, Lamp *l
lamp->col[1]= la->g*lamp->power;
lamp->col[2]= la->b*lamp->power;
- GPU_lamp_update(lamp, ob->lay, ob->obmat);
+ GPU_lamp_update(lamp, ob->lay, (ob->restrictflag & OB_RESTRICT_RENDER), ob->obmat);
lamp->spotsi= la->spotsize;
if(lamp->mode & LA_HALO)