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:
authorTon Roosendaal <ton@blender.org>2008-09-21 20:04:33 +0400
committerTon Roosendaal <ton@blender.org>2008-09-21 20:04:33 +0400
commitafe851b6d194ad93f85a66ea5866a3709708089d (patch)
tree00ced6e9126d6c5e597be1c4b9d748fc59b8c590 /source/blender/render
parent1c29d02305685a942742846c757775800202a52a (diff)
Sunsky / Atmoshphere:
- Added blending mode and factor option, so it's more clear and controllable what happens with it. Also nice for crazy effects of course! - Preview render now shows preview for it too On the todos: - have this in World buttons (as well) for quicker sky setups - review math of color clamping and scaling, this is definitely not good... but a fix will make old files look very different.
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/intern/include/sunsky.h8
-rw-r--r--source/blender/render/intern/source/convertblender.c3
-rw-r--r--source/blender/render/intern/source/pixelshading.c27
-rw-r--r--source/blender/render/intern/source/sunsky.c5
4 files changed, 16 insertions, 27 deletions
diff --git a/source/blender/render/intern/include/sunsky.h b/source/blender/render/intern/include/sunsky.h
index c61a637269a..c5e547097d2 100644
--- a/source/blender/render/intern/include/sunsky.h
+++ b/source/blender/render/intern/include/sunsky.h
@@ -33,7 +33,7 @@
typedef struct SunSky
{
- short effect_type;
+ short effect_type, skyblendtype;
float turbidity;
float theta, phi;
@@ -53,7 +53,8 @@ typedef struct SunSky
float sun_brightness;
float sun_size;
float backscattered_light;
-
+ float skyblendfac;
+
float atm_HGg;
float atm_SunIntensity;
@@ -84,7 +85,8 @@ typedef struct SunSky
* back_scatter, controls back scatter light
* */
void InitSunSky(struct SunSky *sunsky, float turb, float *toSun, float horizon_brightness,
- float spread,float sun_brightness, float sun_size, float back_scatter);
+ float spread,float sun_brightness, float sun_size, float back_scatter,
+ float skyblendfac, short skyblendtype);
/**
* GetSkyXYZRadiance:
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c
index 45d79be2f62..7d92b92a728 100644
--- a/source/blender/render/intern/source/convertblender.c
+++ b/source/blender/render/intern/source/convertblender.c
@@ -3638,7 +3638,8 @@ static GroupObject *add_render_lamp(Render *re, Object *ob)
Normalize(vec);
InitSunSky(lar->sunsky, la->atm_turbidity, vec, la->horizon_brightness,
- la->spread, la->sun_brightness, la->sun_size, la->backscattered_light);
+ la->spread, la->sun_brightness, la->sun_size, la->backscattered_light,
+ la->skyblendfac, la->skyblendtype);
InitAtmosphere(lar->sunsky, la->sun_intensity, 1.0, 1.0, la->atm_inscattering_factor, la->atm_extinction_factor,
la->atm_distance_factor);
diff --git a/source/blender/render/intern/source/pixelshading.c b/source/blender/render/intern/source/pixelshading.c
index ef723eea6b5..4a567042d12 100644
--- a/source/blender/render/intern/source/pixelshading.c
+++ b/source/blender/render/intern/source/pixelshading.c
@@ -45,6 +45,7 @@
#include "BKE_image.h"
#include "BKE_global.h"
+#include "BKE_material.h"
#include "BKE_texture.h"
#include "BKE_utildefines.h"
@@ -604,12 +605,9 @@ void shadeSunView(struct SunSky *sunsky, float *colf, float *rco, float *view, f
*/
void shadeSkyPixel(float *collector, float fx, float fy)
{
- float view[3], dxyview[2];
- float sun_collector[3];
- float suns_color[3];
- short num_sun_lamp;
GroupObject *go;
LampRen *lar;
+ float view[3], dxyview[2];
/*
The rules for sky:
@@ -657,33 +655,18 @@ void shadeSkyPixel(float *collector, float fx, float fy)
collector[3] = 0.0f;
}
- suns_color[0] = suns_color[1] = suns_color[2] = 0;
- num_sun_lamp = 0;
for(go=R.lights.first; go; go= go->next) {
lar= go->lampren;
if(lar->type==LA_SUN && lar->sunsky && (lar->sunsky->effect_type & LA_SUN_EFFECT_SKY)){
-
- num_sun_lamp ++;
+ float sun_collector[3];
+
calc_view_vector(view, fx, fy);
Normalize(view);
shadeSunView(lar->sunsky, sun_collector, NULL, view, NULL);
- suns_color[0] += sun_collector[0];
- suns_color[1] += sun_collector[1];
- suns_color[2] += sun_collector[2];
-
+ ramp_blend(lar->sunsky->skyblendtype, collector, collector+1, collector+2, lar->sunsky->skyblendfac, sun_collector);
}
}
- if( num_sun_lamp > 0 ){
- suns_color[0] /= num_sun_lamp;
- suns_color[1] /= num_sun_lamp;
- suns_color[2] /= num_sun_lamp;
-
- collector[0] += suns_color[0];
- collector[1] += suns_color[1];
- collector[2] += suns_color[2];
- ClipColor(collector);
- }
}
/* aerial perspective */
diff --git a/source/blender/render/intern/source/sunsky.c b/source/blender/render/intern/source/sunsky.c
index 191867765a3..e1c7933cea1 100644
--- a/source/blender/render/intern/source/sunsky.c
+++ b/source/blender/render/intern/source/sunsky.c
@@ -135,7 +135,8 @@ float PerezFunction(struct SunSky *sunsky, const float *lam, float theta, float
* back_scatter, controls back scatter light
* */
void InitSunSky(struct SunSky *sunsky, float turb, float *toSun, float horizon_brightness,
- float spread,float sun_brightness, float sun_size, float back_scatter)
+ float spread,float sun_brightness, float sun_size, float back_scatter,
+ float skyblendfac, short skyblendtype)
{
float theta2;
@@ -151,6 +152,8 @@ void InitSunSky(struct SunSky *sunsky, float turb, float *toSun, float horizon_b
sunsky->sun_brightness = sun_brightness;
sunsky->sun_size = sun_size;
sunsky->backscattered_light = back_scatter;
+ sunsky->skyblendfac= skyblendfac;
+ sunsky->skyblendtype= skyblendtype;
sunsky->toSun[0] = toSun[0];
sunsky->toSun[1] = toSun[1];