[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46134] trunk/blender: Merging phase 1 of the BGE Harmony branch:

Daniel Stokes kupomail at gmail.com
Tue May 1 04:50:23 CEST 2012


Revision: 46134
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46134
Author:   kupoman
Date:     2012-05-01 02:50:17 +0000 (Tue, 01 May 2012)
Log Message:
-----------
Merging phase 1 of the BGE Harmony branch:
 * Shadow color now usable in the BGE
 * Simplified the shadow panel while "Blender Game" renderer is active
 * Added variance shadow maps for the BGE
 * Buffered shadows on sun lamps in the BGE (orthographic)
 * Light textures in the BGE

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/properties_data_lamp.py
    trunk/blender/source/blender/blenkernel/intern/lamp.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/gpu/CMakeLists.txt
    trunk/blender/source/blender/gpu/GPU_extensions.h
    trunk/blender/source/blender/gpu/GPU_material.h
    trunk/blender/source/blender/gpu/SConscript
    trunk/blender/source/blender/gpu/intern/gpu_codegen.c
    trunk/blender/source/blender/gpu/intern/gpu_extensions.c
    trunk/blender/source/blender/gpu/intern/gpu_material.c
    trunk/blender/source/blender/makesdna/DNA_lamp_types.h
    trunk/blender/source/blender/makesrna/intern/rna_lamp.c
    trunk/blender/source/gameengine/Ketsji/KX_Light.cpp
    trunk/blender/source/gameengine/Ketsji/KX_Light.h
    trunk/blender/source/gameengine/VideoTexture/Texture.cpp

Added Paths:
-----------
    trunk/blender/source/blender/gpu/shaders/
    trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl
    trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl.c
    trunk/blender/source/blender/gpu/shaders/gpu_shader_sep_gaussian_blur_frag.glsl
    trunk/blender/source/blender/gpu/shaders/gpu_shader_sep_gaussian_blur_frag.glsl.c
    trunk/blender/source/blender/gpu/shaders/gpu_shader_sep_gaussian_blur_vert.glsl
    trunk/blender/source/blender/gpu/shaders/gpu_shader_sep_gaussian_blur_vert.glsl.c
    trunk/blender/source/blender/gpu/shaders/gpu_shader_vertex.glsl
    trunk/blender/source/blender/gpu/shaders/gpu_shader_vertex.glsl.c
    trunk/blender/source/blender/gpu/shaders/gpu_shader_vsm_store_frag.glsl
    trunk/blender/source/blender/gpu/shaders/gpu_shader_vsm_store_frag.glsl.c
    trunk/blender/source/blender/gpu/shaders/gpu_shader_vsm_store_vert.glsl
    trunk/blender/source/blender/gpu/shaders/gpu_shader_vsm_store_vert.glsl.c

Removed Paths:
-------------
    trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl
    trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl.c
    trunk/blender/source/blender/gpu/intern/gpu_shader_vertex.glsl
    trunk/blender/source/blender/gpu/intern/gpu_shader_vertex.glsl.c

Property Changed:
----------------
    trunk/blender/


Property changes on: trunk/blender
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/soc-2011-tomato:42376,42378-42379,42383,42385,42395,42397-42400,42407,42411,42418,42443-42444,42446,42467,42472,42486,42650-42652,42654-42655,42709-42710,42733-42734,42801,43872,44130,44141,44147-44149,44151-44152,44229-44230,45623-45625,46037
   + /branches/ge_harmony:42255,42279-42282,42286,42302,42338,42349,42616,42620,42698-42699,42739,42753,42773-42774,42832,44568,44597-44598,44793-44794
/branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/soc-2011-tomato:42376,42378-42379,42383,42385,42395,42397-42400,42407,42411,42418,42443-42444,42446,42467,42472,42486,42650-42652,42654-42655,42709-42710,42733-42734,42801,43872,44130,44141,44147-44149,44151-44152,44229-44230,45623-45625,46037

Modified: trunk/blender/release/scripts/startup/bl_ui/properties_data_lamp.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/properties_data_lamp.py	2012-04-30 23:51:09 UTC (rev 46133)
+++ trunk/blender/release/scripts/startup/bl_ui/properties_data_lamp.py	2012-05-01 02:50:17 UTC (rev 46134)
@@ -186,11 +186,62 @@
         sub = col.column(align=True)
         sub.prop(lamp, "atmosphere_inscattering", slider=True, text="Inscattering")
         sub.prop(lamp, "atmosphere_extinction", slider=True, text="Extinction")
+        
+class DATA_PT_shadow_game(DataButtonsPanel, bpy.types.Panel):
+    bl_label = "Shadow"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
+    @classmethod
+    def poll(cls, context):
+        COMPAT_LIGHTS = {'SPOT', 'SUN'}
+        lamp = context.lamp
+        engine = context.scene.render.engine
+        return (lamp and lamp.type in COMPAT_LIGHTS) and (engine in cls.COMPAT_ENGINES)
+        
+    def draw_header(self, context):
+        lamp = context.lamp
+        
+        self.layout.prop(lamp, "use_shadow", text="")
 
+    def draw(self, context):
+        layout = self.layout
+
+        lamp = context.lamp
+        
+        split = layout.split()
+
+        col = split.column()
+        col.prop(lamp, "shadow_color", text="")
+
+        col = split.column()
+        col.prop(lamp, "use_shadow_layer", text="This Layer Only")
+        col.prop(lamp, "use_only_shadow")
+    
+        col = layout.column()
+        col.label("Buffer Type:")
+        col.prop(lamp, "ge_shadow_buffer_type", text="", toggle=True)
+        col.label("Quality:")
+        col = layout.column(align=True)
+        col.prop(lamp, "shadow_buffer_size", text="Size")
+        col.prop(lamp, "shadow_buffer_bias", text="Bias")
+        col.prop(lamp, "shadow_buffer_bleed_bias", text="Bleed Bias")
+		
+        
+        row = layout.row()
+        row.label("Clipping:")
+        row = layout.row(align=True)
+        row.prop(lamp, "shadow_buffer_clip_start", text="Clip Start")
+        row.prop(lamp, "shadow_buffer_clip_end", text="Clip End")
+
+        if lamp.type == 'SUN':
+            row = layout.row()
+            row.prop(lamp, "shadow_frustum_size", text="Frustum Size")
+        
+        layout.active = lamp.use_shadow
+
 class DATA_PT_shadow(DataButtonsPanel, Panel):
     bl_label = "Shadow"
-    COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+    COMPAT_ENGINES = {'BLENDER_RENDER'}
 
     @classmethod
     def poll(cls, context):

Modified: trunk/blender/source/blender/blenkernel/intern/lamp.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/lamp.c	2012-04-30 23:51:09 UTC (rev 46133)
+++ trunk/blender/source/blender/blenkernel/intern/lamp.c	2012-05-01 02:50:17 UTC (rev 46134)
@@ -96,6 +96,7 @@
 	la->skyblendfac= 1.0f;
 	la->sky_colorspace= BLI_XYZ_CIE;
 	la->sky_exposure= 1.0f;
+	la->shadow_frustum_size= 10.0f;
 	
 	curvemapping_initialize(la->curfalloff);
 	return la;

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2012-04-30 23:51:09 UTC (rev 46133)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2012-05-01 02:50:17 UTC (rev 46134)
@@ -13343,6 +13343,15 @@
 			}
 		}
 	}
+	
+	{
+		Lamp *la;
+		for (la= main->lamp.first; la; la= la->id.next) {
+			if (la->shadow_frustum_size == 0.0)
+				la->shadow_frustum_size= 10.0f;
+		}
+	}
+	
 	/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
 	/* WATCH IT 2!: Userdef struct init has to be in editors/interface/resources.c! */
 

Modified: trunk/blender/source/blender/gpu/CMakeLists.txt
===================================================================
--- trunk/blender/source/blender/gpu/CMakeLists.txt	2012-04-30 23:51:09 UTC (rev 46133)
+++ trunk/blender/source/blender/gpu/CMakeLists.txt	2012-05-01 02:50:17 UTC (rev 46134)
@@ -50,8 +50,13 @@
 	intern/gpu_draw.c
 	intern/gpu_extensions.c
 	intern/gpu_material.c
-	intern/gpu_shader_material.glsl.c
-	intern/gpu_shader_vertex.glsl.c
+	
+	shaders/gpu_shader_material.glsl.c
+	shaders/gpu_shader_vertex.glsl.c
+	shaders/gpu_shader_sep_gaussian_blur_frag.glsl.c
+	shaders/gpu_shader_sep_gaussian_blur_vert.glsl.c
+	shaders/gpu_shader_vsm_store_frag.glsl.c
+	shaders/gpu_shader_vsm_store_vert.glsl.c
 
 	GPU_buffers.h
 	GPU_draw.h

Modified: trunk/blender/source/blender/gpu/GPU_extensions.h
===================================================================
--- trunk/blender/source/blender/gpu/GPU_extensions.h	2012-04-30 23:51:09 UTC (rev 46133)
+++ trunk/blender/source/blender/gpu/GPU_extensions.h	2012-05-01 02:50:17 UTC (rev 46134)
@@ -109,6 +109,7 @@
 GPUTexture *GPU_texture_create_2D(int w, int h, float *pixels, char err_out[256]);
 GPUTexture *GPU_texture_create_3D(int w, int h, int depth, float *fpixels);
 GPUTexture *GPU_texture_create_depth(int w, int h, char err_out[256]);
+GPUTexture *GPU_texture_create_vsm_shadow_map(int size, char err_out[256]);
 GPUTexture *GPU_texture_from_blender(struct Image *ima,
 	struct ImageUser *iuser, double time, int mipmap);
 void GPU_texture_free(GPUTexture *tex);
@@ -140,6 +141,7 @@
 void GPU_framebuffer_free(GPUFrameBuffer *fb);
 
 void GPU_framebuffer_restore(void);
+void GPU_framebuffer_blur(GPUFrameBuffer *fb, GPUTexture *tex, GPUFrameBuffer *blurfb, GPUTexture *blurtex);
 
 /* GPU OffScreen
  * - wrapper around framebuffer and texture for simple offscreen drawing
@@ -169,6 +171,15 @@
 
 int GPU_shader_get_attribute(GPUShader *shader, const char *name);
 
+/* Builtin/Non-generated shaders */
+typedef enum GPUBuiltinShader {
+	GPU_SHADER_VSM_STORE =			(1<<0),
+	GPU_SHADER_SEP_GAUSSIAN_BLUR =	(1<<1),
+} GPUBuiltinShader;
+
+GPUShader *GPU_shader_get_builtin_shader(GPUBuiltinShader shader);
+void GPU_shader_free_builtin_shaders();
+
 /* Vertex attributes for shaders */
 
 #define GPU_MAX_ATTRIB		32

Modified: trunk/blender/source/blender/gpu/GPU_material.h
===================================================================
--- trunk/blender/source/blender/gpu/GPU_material.h	2012-04-30 23:51:09 UTC (rev 46133)
+++ trunk/blender/source/blender/gpu/GPU_material.h	2012-05-01 02:50:17 UTC (rev 46134)
@@ -225,6 +225,7 @@
 void GPU_lamp_free(struct Object *ob);
 
 int GPU_lamp_has_shadow_buffer(GPULamp *lamp);
+void GPU_lamp_update_buffer_mats(GPULamp *lamp);
 void GPU_lamp_shadow_buffer_bind(GPULamp *lamp, float viewmat[][4], int *winsize, float winmat[][4]);
 void GPU_lamp_shadow_buffer_unbind(GPULamp *lamp);
 

Modified: trunk/blender/source/blender/gpu/SConscript
===================================================================
--- trunk/blender/source/blender/gpu/SConscript	2012-04-30 23:51:09 UTC (rev 46133)
+++ trunk/blender/source/blender/gpu/SConscript	2012-05-01 02:50:17 UTC (rev 46134)
@@ -2,6 +2,7 @@
 Import ('env')
 
 sources = env.Glob('intern/*.c')
+sources += env.Glob('shaders/*.c')
 
 defs = [ 'GLEW_STATIC' ]
 

Modified: trunk/blender/source/blender/gpu/intern/gpu_codegen.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_codegen.c	2012-04-30 23:51:09 UTC (rev 46133)
+++ trunk/blender/source/blender/gpu/intern/gpu_codegen.c	2012-05-01 02:50:17 UTC (rev 46134)
@@ -258,6 +258,8 @@
 		FUNCTION_HASH = NULL;
 	}
 
+	GPU_shader_free_builtin_shaders();
+
 	if (glsl_material_library) {
 		MEM_freeN(glsl_material_library);
 		glsl_material_library = NULL;

Modified: trunk/blender/source/blender/gpu/intern/gpu_extensions.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_extensions.c	2012-04-30 23:51:09 UTC (rev 46133)
+++ trunk/blender/source/blender/gpu/intern/gpu_extensions.c	2012-05-01 02:50:17 UTC (rev 46134)
@@ -67,6 +67,17 @@
  * - arb draw buffers? 2.0 core
  */
 
+/* Non-generated shaders */
+extern char datatoc_gpu_shader_vsm_store_vert_glsl[];
+extern char datatoc_gpu_shader_vsm_store_frag_glsl[];
+extern char datatoc_gpu_shader_sep_gaussian_blur_vert_glsl[];
+extern char datatoc_gpu_shader_sep_gaussian_blur_frag_glsl[];
+
+typedef struct GPUShaders {
+	GPUShader *vsm_store;
+	GPUShader *sep_gaussian_blur;
+} GPUShaders;
+
 static struct GPUGlobal {
 	GLint maxtextures;
 	GLuint currentfb;
@@ -77,7 +88,8 @@
 	GPUDeviceType device;
 	GPUOSType os;
 	GPUDriverType driver;
-} GG = {1, 0, 0, 0, 0};
+	GPUShaders shaders;
+} GG = {1, 0};
 
 /* GPU Types */
 
@@ -588,6 +600,25 @@
 	return tex;
 }
 
+/**
+ * A shadow map for VSM needs two components (depth and depth^2)
+ */
+GPUTexture *GPU_texture_create_vsm_shadow_map(int size, char err_out[256])
+{
+	GPUTexture *tex = GPU_texture_create_nD(size, size, 2, NULL, 0, err_out);
+
+	if (tex) {
+		/* Now we tweak some of the settings */
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+		glTexImage2D(GL_TEXTURE_2D, 0, GL_RG32F, size, size, 0, GL_RG, GL_FLOAT, 0);
+
+		GPU_texture_unbind(tex);
+	}
+
+	return tex;
+}
+
 void GPU_texture_bind(GPUTexture *tex, int number)
 {
 	GLenum arbnumber;
@@ -846,6 +877,65 @@
 	}
 }
 

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list