[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16651] trunk/blender/source/blender: Sunsky / Atmoshphere:

Ton Roosendaal ton at blender.org
Sun Sep 21 18:04:33 CEST 2008


Revision: 16651
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16651
Author:   ton
Date:     2008-09-21 18:04:33 +0200 (Sun, 21 Sep 2008)

Log Message:
-----------
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.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_blender.h
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/makesdna/DNA_lamp_types.h
    trunk/blender/source/blender/makesdna/DNA_material_types.h
    trunk/blender/source/blender/render/intern/include/sunsky.h
    trunk/blender/source/blender/render/intern/source/convertblender.c
    trunk/blender/source/blender/render/intern/source/pixelshading.c
    trunk/blender/source/blender/render/intern/source/sunsky.c
    trunk/blender/source/blender/src/buttons_shading.c
    trunk/blender/source/blender/src/preview.blend.c
    trunk/blender/source/blender/src/previewrender.c

Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h	2008-09-21 15:17:50 UTC (rev 16650)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h	2008-09-21 16:04:33 UTC (rev 16651)
@@ -41,7 +41,7 @@
 struct MemFile;
 
 #define BLENDER_VERSION			247
-#define BLENDER_SUBVERSION		4
+#define BLENDER_SUBVERSION		5
 
 #define BLENDER_MINVERSION		245
 #define BLENDER_MINSUBVERSION	15

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2008-09-21 15:17:50 UTC (rev 16650)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2008-09-21 16:04:33 UTC (rev 16651)
@@ -748,6 +748,9 @@
 	la->atm_extinction_factor = 1.0;
 	la->atm_distance_factor = 1.0;
 	la->sun_intensity = 1.0;
+	la->skyblendtype= MA_RAMP_ADD;
+	la->skyblendfac= 1.0f;
+
 	curvemapping_initialize(la->curfalloff);
 	return la;
 }

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2008-09-21 15:17:50 UTC (rev 16650)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2008-09-21 16:04:33 UTC (rev 16651)
@@ -7818,6 +7818,13 @@
 		}
 	}
 
+	if (main->versionfile < 247 || (main->versionfile == 247 && main->subversionfile < 5)) {
+		Lamp *la= main->lamp.first;
+		for(; la; la= la->id.next) {
+			la->skyblendtype= MA_RAMP_ADD;
+			la->skyblendfac= 1.0f;
+		}
+	}
 	/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
 	/* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */
 

Modified: trunk/blender/source/blender/makesdna/DNA_lamp_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_lamp_types.h	2008-09-21 15:17:50 UTC (rev 16650)
+++ trunk/blender/source/blender/makesdna/DNA_lamp_types.h	2008-09-21 16:04:33 UTC (rev 16651)
@@ -79,7 +79,7 @@
 	
 	/* sun/sky */
 	short sun_effect_type;
-	short atm_pad[3];
+	short skyblendtype;
     float horizon_brightness;
     float spread;
     float sun_brightness;
@@ -90,8 +90,8 @@
     float atm_inscattering_factor;
     float atm_extinction_factor;
     float atm_distance_factor;
+	float skyblendfac;
 
-
 	/* yafray: photonlight params */
 	int YF_numphotons, YF_numsearch;
 	short YF_phdepth, YF_useqmc, YF_bufsize, YF_pad;

Modified: trunk/blender/source/blender/makesdna/DNA_material_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_material_types.h	2008-09-21 15:17:50 UTC (rev 16650)
+++ trunk/blender/source/blender/makesdna/DNA_material_types.h	2008-09-21 16:04:33 UTC (rev 16651)
@@ -320,6 +320,7 @@
 #define MA_LAMP			6
 #define MA_SKY			7
 #define MA_HAIR			10
+#define MA_ATMOS		11
 
 /* pr_back */
 #define MA_DARK			1

Modified: trunk/blender/source/blender/render/intern/include/sunsky.h
===================================================================
--- trunk/blender/source/blender/render/intern/include/sunsky.h	2008-09-21 15:17:50 UTC (rev 16650)
+++ trunk/blender/source/blender/render/intern/include/sunsky.h	2008-09-21 16:04:33 UTC (rev 16651)
@@ -33,7 +33,7 @@
 
 typedef struct SunSky
 {
-    short effect_type;
+    short effect_type, skyblendtype;
     float turbidity;
     float theta, phi;
     
@@ -53,7 +53,8 @@
     float sun_brightness;
     float sun_size;
     float backscattered_light;
-    
+    float skyblendfac;
+	
     float atm_HGg;
 
     float atm_SunIntensity;
@@ -84,7 +85,8 @@
  * 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:

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c	2008-09-21 15:17:50 UTC (rev 16650)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c	2008-09-21 16:04:33 UTC (rev 16651)
@@ -3638,7 +3638,8 @@
 		    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);

Modified: trunk/blender/source/blender/render/intern/source/pixelshading.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pixelshading.c	2008-09-21 15:17:50 UTC (rev 16650)
+++ trunk/blender/source/blender/render/intern/source/pixelshading.c	2008-09-21 16:04:33 UTC (rev 16651)
@@ -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 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 @@
 		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 */

Modified: trunk/blender/source/blender/render/intern/source/sunsky.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/sunsky.c	2008-09-21 15:17:50 UTC (rev 16650)
+++ trunk/blender/source/blender/render/intern/source/sunsky.c	2008-09-21 16:04:33 UTC (rev 16651)
@@ -135,7 +135,8 @@
  * 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 @@
 	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];

Modified: trunk/blender/source/blender/src/buttons_shading.c
===================================================================
--- trunk/blender/source/blender/src/buttons_shading.c	2008-09-21 15:17:50 UTC (rev 16650)
+++ trunk/blender/source/blender/src/buttons_shading.c	2008-09-21 16:04:33 UTC (rev 16651)
@@ -2871,7 +2871,7 @@
 
 	uiSetButLock(la->id.lib!=0, ERROR_LIBDATA_MESSAGE);
 	
-	uiDefButBitS(block, TOG, LA_SUN_EFFECT_SKY, REDRAWVIEW3D, "Sky", 10,205,BUTW2,20,&(la->sun_effect_type), 0, 0, 0, 0, "Apply sun light effect on sky.");
+	uiDefButBitS(block, TOG, LA_SUN_EFFECT_SKY, B_LAMPPRV, "Sky", 10,205,BUTW2,20,&(la->sun_effect_type), 0, 0, 0, 0, "Apply sun light effect on sky.");
 	uiDefButBitS(block, TOG, LA_SUN_EFFECT_AP, REDRAWVIEW3D, "Atmosphere", 20+BUTW2,205,BUTW2,20,&(la->sun_effect_type), 0, 0, 0, 0, "Apply sun light effect on atmosphere.");
 
 	if(la->sun_effect_type & (LA_SUN_EFFECT_SKY|LA_SUN_EFFECT_AP)){
@@ -2881,11 +2881,19 @@
 	y = 180;
 	if(la->sun_effect_type & LA_SUN_EFFECT_SKY)
 	{
-		uiDefButF(block, NUM, B_LAMPREDRAW, "Hor.Bright:",10,y-25,BUTW2,19, &(la->horizon_brightness), 0.00f, 20.00f, 10, 0, "Sets horizon brightness.");
-		uiDefButF(block, NUM, B_LAMPREDRAW, "Hor.Spread:",10,y-50,BUTW2,19, &(la->spread), 0.00f, 10.00f, 10, 0, "Sets horizon spread.");
-		uiDefButF(block, NUM, B_LAMPREDRAW, "Sun Bright:",10,y-75,BUTW2,19, &(la->sun_brightness), 0.00f, 10.0f, 10, 0, "Sets sun brightness.");
-		uiDefButF(block, NUM, B_LAMPREDRAW, "Sun Size:",10,y-100,BUTW2,19, &(la->sun_size), 0.00f, 10.00f, 10, 0, "Sets sun size.");
-		uiDefButF(block, NUM, B_LAMPREDRAW, "Back Light:",10,y-125,BUTW2,19, &(la->backscattered_light), -1.00f, 1.00f, 10, 0, "Sets backscatter light.");
+		uiBlockBeginAlign(block);
+		uiDefButS(block, MENU, B_LAMPPRV, "Mix %x0|Add %x1|Subtract %x3|Multiply %x2|Screen %x4|Overlay %x9|Divide %x5|Difference %x6|Darken %x7|Lighten %x8|Dodge %x10|Burn %x11|Color %x15|Value %x14|Saturation %x13|Hue %x12",
+					 10,y-25,BUTW2/2,19, 
+					 &la->skyblendtype, 0.0f, 0.0f, 0, 0, "Blend type for how it gets combined with sky");
+		uiDefButF(block, NUM, B_LAMPPRV, "",10+BUTW2/2,y-25,BUTW2/2,19, &(la->skyblendfac), 0.0f, 1.0f, 10, 0, "Sets blending factor with sky color");
+		uiBlockEndAlign(block);
+		
+		y -= 25;
+		uiDefButF(block, NUM, B_LAMPPRV, "Hor.Bright:",10,y-25,BUTW2,19, &(la->horizon_brightness), 0.00f, 20.00f, 10, 0, "Sets horizon brightness.");
+		uiDefButF(block, NUM, B_LAMPPRV, "Hor.Spread:",10,y-50,BUTW2,19, &(la->spread), 0.00f, 10.00f, 10, 0, "Sets horizon spread.");
+		uiDefButF(block, NUM, B_LAMPPRV, "Sun Bright:",10,y-75,BUTW2,19, &(la->sun_brightness), 0.00f, 10.0f, 10, 0, "Sets sun brightness.");

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list