[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