[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49597] branches/ge_harmony: Adding the UI for pre-process filters and cleaning up some duplicate code.
Daniel Stokes
kupomail at gmail.com
Mon Aug 6 10:02:08 CEST 2012
Revision: 49597
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49597
Author: kupoman
Date: 2012-08-06 08:02:08 +0000 (Mon, 06 Aug 2012)
Log Message:
-----------
Adding the UI for pre-process filters and cleaning up some duplicate code. The pre-process filters are not functional yet.
Modified Paths:
--------------
branches/ge_harmony/release/scripts/startup/bl_ui/properties_game.py
branches/ge_harmony/source/blender/makesdna/DNA_scene_types.h
branches/ge_harmony/source/blender/makesrna/intern/CMakeLists.txt
branches/ge_harmony/source/blender/makesrna/intern/rna_material.c
branches/ge_harmony/source/blender/makesrna/intern/rna_scene.c
branches/ge_harmony/source/blender/makesrna/intern/rna_shader.c
Added Paths:
-----------
branches/ge_harmony/source/blender/makesrna/RNA_shader_utils.h
Modified: branches/ge_harmony/release/scripts/startup/bl_ui/properties_game.py
===================================================================
--- branches/ge_harmony/release/scripts/startup/bl_ui/properties_game.py 2012-08-06 08:01:20 UTC (rev 49596)
+++ branches/ge_harmony/release/scripts/startup/bl_ui/properties_game.py 2012-08-06 08:02:08 UTC (rev 49597)
@@ -358,7 +358,59 @@
col = split.column()
layout.prop(gs, "dome_text")
+
+def display_filter_settings(filter, layout):
+ col = layout.column()
+ col.label("Source:")
+ row = col.row()
+ row.prop(filter, "shader_location", expand=True)
+ if filter.shader_location == "INTERNAL":
+ col.prop(filter, "source_text", text="")
+ elif filter.shader_location == "EXTERNAL":
+ col.prop(filter, "source_path", text="")
+
+ if filter.uniforms:
+ col.label("Uniforms:")
+
+ for uniform in filter.uniforms:
+ col = layout.column()
+ if hasattr(uniform, "value"):
+ reserved = uniform.name.startswith("bgl_")
+ if uniform.type in ("VEC2", "VEC3", "VEC4", "IVEC2", "IVEC3", "IVEC4"):
+ if not reserved:
+ col.label(uniform.name + ":")
+ row = col.row()
+ row.prop(uniform, "value", text="")
+ else:
+ col.label(uniform.name)
+ else:
+ row = col.row()
+ if not reserved:
+ row.label(uniform.name + ":")
+ row.prop(uniform, "value", text="")
+ else:
+ row.label(uniform.name)
+
+ col.active = not reserved
+class RENDER_PT_game_pre_filters(RenderButtonsPanel, Panel):
+ bl_label = "Pre-Process Filters"
+ COMPAT_ENGINES = {'BLENDER_GAME'}
+
+ def draw(self, context):
+ layout = self.layout
+
+ gs = context.scene.game_settings
+
+ row = layout.row()
+ col = row.column()
+ col.template_list(gs, "pre_filters", gs, "active_pre_filter_index", rows=2)
+ col.template_ID(gs, "active_pre_filter", new="shader.new_postfilter")
+
+ filter = gs.active_post_filter
+ if filter:
+ display_filter_settings(filter, layout)
+
class RENDER_PT_game_post_filters(RenderButtonsPanel, Panel):
bl_label = "Post-Process Filters"
COMPAT_ENGINES = {'BLENDER_GAME'}
@@ -375,37 +427,7 @@
filter = gs.active_post_filter
if filter:
- col.label("Source:")
- row = col.row()
- row.prop(filter, "shader_location", expand=True)
- if filter.shader_location == "INTERNAL":
- col.prop(filter, "source_text", text="")
- elif filter.shader_location == "EXTERNAL":
- col.prop(filter, "source_path", text="")
-
- if filter.uniforms:
- col.label("Uniforms:")
-
- for uniform in filter.uniforms:
- col = layout.column()
- if hasattr(uniform, "value"):
- reserved = uniform.name.startswith("bgl_")
- if uniform.type in ("VEC2", "VEC3", "VEC4", "IVEC2", "IVEC3", "IVEC4"):
- if not reserved:
- col.label(uniform.name + ":")
- row = col.row()
- row.prop(uniform, "value", text="")
- else:
- col.label(uniform.name)
- else:
- row = col.row()
- if not reserved:
- row.label(uniform.name + ":")
- row.prop(uniform, "value", text="")
- else:
- row.label(uniform.name)
-
- col.active = not reserved
+ display_filter_settings(filter, layout)
class RENDER_PT_game_shading(RenderButtonsPanel, Panel):
Modified: branches/ge_harmony/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- branches/ge_harmony/source/blender/makesdna/DNA_scene_types.h 2012-08-06 08:01:20 UTC (rev 49596)
+++ branches/ge_harmony/source/blender/makesdna/DNA_scene_types.h 2012-08-06 08:02:08 UTC (rev 49597)
@@ -629,6 +629,8 @@
int actpostfilter;
ListBase postfilters;
+ int actprefilter, filterpad;
+ ListBase prefilters;
} GameData;
#define STEREO_NOSTEREO 1
Added: branches/ge_harmony/source/blender/makesrna/RNA_shader_utils.h
===================================================================
--- branches/ge_harmony/source/blender/makesrna/RNA_shader_utils.h (rev 0)
+++ branches/ge_harmony/source/blender/makesrna/RNA_shader_utils.h 2012-08-06 08:02:08 UTC (rev 49597)
@@ -0,0 +1,48 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Blender Foundation (2008).
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef __RNA_SHADER_UTILS_H__
+#define __RNA_SHADER_UTILS_H__
+
+/** \file RNA_shader_utils.h
+ * \ingroup RNA
+ * Utility functions for creating shader related functions. */
+
+#include "DNA_listBase.h"
+#include "RNA_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+PointerRNA rna_Shader_active_get(PointerRNA *ptr, ListBase *list, int index);
+void rna_Shader_active_set(PointerRNA value, ListBase *list, int index);
+int rna_Shader_active_index_get(int index);
+void rna_Shader_active_index_set(int value, int *index);
+void rna_Shader_active_index_range(int *min, int *max, ListBase *list);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __RNA_SHADER_UTILS_H__ */
+
Modified: branches/ge_harmony/source/blender/makesrna/intern/CMakeLists.txt
===================================================================
--- branches/ge_harmony/source/blender/makesrna/intern/CMakeLists.txt 2012-08-06 08:01:20 UTC (rev 49596)
+++ branches/ge_harmony/source/blender/makesrna/intern/CMakeLists.txt 2012-08-06 08:02:08 UTC (rev 49597)
@@ -124,6 +124,7 @@
../RNA_define.h
../RNA_documentation.h
../RNA_enum_types.h
+ ../RNA_shader_utils.h
../RNA_types.h
)
Modified: branches/ge_harmony/source/blender/makesrna/intern/rna_material.c
===================================================================
--- branches/ge_harmony/source/blender/makesrna/intern/rna_material.c 2012-08-06 08:01:20 UTC (rev 49596)
+++ branches/ge_harmony/source/blender/makesrna/intern/rna_material.c 2012-08-06 08:02:08 UTC (rev 49597)
@@ -83,6 +83,8 @@
#include "DNA_node_types.h"
+#include "RNA_shader_utils.h"
+
#include "BKE_depsgraph.h"
#include "BKE_main.h"
#include "BKE_material.h"
@@ -200,52 +202,31 @@
static PointerRNA rna_Material_active_shader_get(PointerRNA *ptr)
{
Material *ma = (Material*)ptr->data;
- CustomShader *cs = BLI_findlink(&ma->custom_shaders, (int)ma->actshader-1);
- Shader *shad = (cs) ? cs->shader : NULL;
- return rna_pointer_inherit_refine(ptr, &RNA_Shader, shad);
+ return rna_Shader_active_get(ptr, &ma->custom_shaders, ma->actshader);
}
static void rna_Material_active_shader_set(PointerRNA *ptr, PointerRNA value)
{
Material *ma = (Material*)ptr->data;
- Shader *sh = (Shader*)value.data;
-
- CustomShader *link = BLI_findlink(&ma->custom_shaders, (int)ma->actshader-1);
- if (!link)
- {
- CustomShader *cs = MEM_callocN(sizeof(CustomShader), "New Custom Shader");
- cs->shader = sh;
- BLI_addtail(&ma->custom_shaders, cs);
- }
- else
- {
- if (link->shader)
- link->shader->id.us--;
- link->shader = sh;
- }
-
- id_us_plus((ID *) sh);
+ rna_Shader_active_set(value, &ma->custom_shaders, ma->actshader);
}
static int rna_Material_active_shader_index_get(PointerRNA *ptr)
{
Material *ma = (Material*)ptr->data;
- return MAX2(ma->actshader-1, 0);
+ return rna_Shader_active_index_get(ma->actshader);
}
static void rna_Material_active_shader_index_set(PointerRNA *ptr, int value)
{
Material *ma = (Material*)ptr->data;
- ma->actshader = value+1;
+ rna_Shader_active_index_set(value, &ma->actshader);
}
static void rna_Material_active_shader_index_range(PointerRNA *ptr, int *min, int *max)
{
Material *ma = (Material*)ptr->data;
-
- *min = 0;
- *max = BLI_countlist(&ma->custom_shaders)-1;
- *max = MAX2(0, *max);
+ rna_Shader_active_index_range(min, max, &ma->custom_shaders);
}
static void rna_CustomShader_name_get(struct PointerRNA *ptr, char *str)
Modified: branches/ge_harmony/source/blender/makesrna/intern/rna_scene.c
===================================================================
--- branches/ge_harmony/source/blender/makesrna/intern/rna_scene.c 2012-08-06 08:01:20 UTC (rev 49596)
+++ branches/ge_harmony/source/blender/makesrna/intern/rna_scene.c 2012-08-06 08:02:08 UTC (rev 49597)
@@ -290,6 +290,7 @@
#include "DNA_mesh_types.h"
#include "RNA_access.h"
+#include "RNA_shader_utils.h"
#include "MEM_guardedalloc.h"
@@ -1341,52 +1342,61 @@
static PointerRNA rna_GameSettings_active_postfilter_get(PointerRNA *ptr)
{
GameData *gm = (GameData *)ptr->data;
- ShaderLink *link = BLI_findlink(&gm->postfilters, (int)gm->actpostfilter-1);
- Shader *shader = (link) ? link->shader : NULL;
- return rna_pointer_inherit_refine(ptr, &RNA_Shader, shader);
+ return rna_Shader_active_get(ptr, &gm->postfilters, gm->actpostfilter);
}
+static PointerRNA rna_GameSettings_active_prefilter_get(PointerRNA *ptr)
+{
+ GameData *gm = (GameData *)ptr->data;
+ return rna_Shader_active_get(ptr, &gm->prefilters, gm->actprefilter);
+}
+
static void rna_GameSettings_active_postfilter_set(PointerRNA *ptr, PointerRNA value)
{
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list