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:
authorJeroen Bakker <j.bakker@atmind.nl>2018-05-14 11:04:34 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2018-05-14 11:04:34 +0300
commit50bab7eb8a6fce58a6cd1dc52b4f29454d8b4c36 (patch)
tree09b89ce112cba39e8a66e6daf71c7cea3ad56714 /source/blender/blenkernel
parent95869f58388a318a897dc7dc262677ffb0cb7fc2 (diff)
Workbench: Studio light better diffuse sampling
Increased steps of diffuse sampling for narrow hightlights
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/studiolight.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/source/blender/blenkernel/intern/studiolight.c b/source/blender/blenkernel/intern/studiolight.c
index c5d2903e7cc..f0db054620a 100644
--- a/source/blender/blenkernel/intern/studiolight.c
+++ b/source/blender/blenkernel/intern/studiolight.c
@@ -53,6 +53,7 @@
/* Statics */
static ListBase studiolights;
#define STUDIO_LIGHT_EXTENSIONS ".jpg", ".hdr"
+#define STUDIO_LIGHT_DIFFUSE_SAMPLE_STEP 64
static const char *STUDIO_LIGHT_FOLDER = "studiolights/";
/* FUNCTIONS */
@@ -78,8 +79,9 @@ static void direction_to_equirectangular(float r[2], const float dir[3])
r[1] = (acosf(dir[2] / 1.0) - M_PI) / -M_PI;
}
-static void studiolight_calculate_directional_diffuse_light(ImBuf *ibuf, float color[4], const float start[3], const float v1[3], const float v2[3], int steps)
+static void studiolight_calculate_directional_diffuse_light(ImBuf *ibuf, float color[4], const float start[3], const float v1[3], const float v2[3])
{
+ const int steps = STUDIO_LIGHT_DIFFUSE_SAMPLE_STEP;
float uv[2];
float dir[3];
float col[4];
@@ -111,7 +113,6 @@ static void studiolight_calculate_directional_diffuse_light(ImBuf *ibuf, float c
static void studiolight_calculate_diffuse_light(StudioLight *sl)
{
- const int steps = 16;
float start[3];
float v1[3];
float v2[3];
@@ -133,23 +134,23 @@ static void studiolight_calculate_diffuse_light(StudioLight *sl)
copy_v3_fl3(start, -1.0f, -1.0f, -1.0f);
copy_v3_fl3(v1, 0.0f, 2.0f, 0.0f);
copy_v3_fl3(v2, 0.0f, 0.0f, 2.0f);
- studiolight_calculate_directional_diffuse_light(ibuf, sl->diffuse_light[STUDIOLIGHT_Z_NEG], start, v1, v2, steps);
+ studiolight_calculate_directional_diffuse_light(ibuf, sl->diffuse_light[STUDIOLIGHT_Z_NEG], start, v1, v2);
copy_v3_fl3(start, 1.0f, -1.0f, -1.0f);
- studiolight_calculate_directional_diffuse_light(ibuf, sl->diffuse_light[STUDIOLIGHT_Z_POS], start, v1, v2, steps);
+ studiolight_calculate_directional_diffuse_light(ibuf, sl->diffuse_light[STUDIOLIGHT_Z_POS], start, v1, v2);
copy_v3_fl3(start, -1.0f, -1.0f, -1.0f);
copy_v3_fl3(v1, 2.0f, 0.0f, 0.0f);
copy_v3_fl3(v2, 0.0f, 0.0f, 2.0f);
- studiolight_calculate_directional_diffuse_light(ibuf, sl->diffuse_light[STUDIOLIGHT_X_POS], start, v1, v2, steps);
+ studiolight_calculate_directional_diffuse_light(ibuf, sl->diffuse_light[STUDIOLIGHT_X_POS], start, v1, v2);
copy_v3_fl3(start, -1.0f, 1.0f, -1.0f);
- studiolight_calculate_directional_diffuse_light(ibuf, sl->diffuse_light[STUDIOLIGHT_X_NEG], start, v1, v2, steps);
+ studiolight_calculate_directional_diffuse_light(ibuf, sl->diffuse_light[STUDIOLIGHT_X_NEG], start, v1, v2);
copy_v3_fl3(start, -1.0f, -1.0f, -1.0f);
copy_v3_fl3(v1, 2.0f, 0.0f, 0.0f);
copy_v3_fl3(v2, 0.0f, 2.0f, 0.0f);
- studiolight_calculate_directional_diffuse_light(ibuf, sl->diffuse_light[STUDIOLIGHT_Y_NEG], start, v1, v2, steps);
+ studiolight_calculate_directional_diffuse_light(ibuf, sl->diffuse_light[STUDIOLIGHT_Y_NEG], start, v1, v2);
copy_v3_fl3(start, -1.0f, -1.0f, 1.0f);
- studiolight_calculate_directional_diffuse_light(ibuf, sl->diffuse_light[STUDIOLIGHT_Y_POS], start, v1, v2, steps);
+ studiolight_calculate_directional_diffuse_light(ibuf, sl->diffuse_light[STUDIOLIGHT_Y_POS], start, v1, v2);
IMB_freeImBuf(ibuf);
}