[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58425] trunk/blender/source/gameengine: BGE fix [#35563] Object colour setting for objects and fonts not using colour management like materials

Daniel Stokes kupomail at gmail.com
Sat Jul 20 00:54:03 CEST 2013


Revision: 58425
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58425
Author:   kupoman
Date:     2013-07-19 22:54:02 +0000 (Fri, 19 Jul 2013)
Log Message:
-----------
BGE fix [#35563] Object colour setting for objects and fonts not using colour management like materials

Modified Paths:
--------------
    trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
    trunk/blender/source/gameengine/Ketsji/KX_FontObject.cpp
    trunk/blender/source/gameengine/Ketsji/KX_FontObject.h

Modified: trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp	2013-07-19 22:51:48 UTC (rev 58424)
+++ trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp	2013-07-19 22:54:02 UTC (rev 58425)
@@ -2085,8 +2085,9 @@
 
 	case OB_FONT:
 	{
+		bool do_color_management = !(blenderscene->gm.flag & GAME_GLSL_NO_COLOR_MANAGEMENT);
 		/* font objects have no bounding box */
-		gameobj = new KX_FontObject(kxscene,KX_Scene::m_callbacks, rendertools, ob);
+		gameobj = new KX_FontObject(kxscene,KX_Scene::m_callbacks, rendertools, ob, do_color_management);
 
 		/* add to the list only the visible fonts */
 		if ((ob->lay & kxscene->GetBlenderScene()->lay) != 0)

Modified: trunk/blender/source/gameengine/Ketsji/KX_FontObject.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_FontObject.cpp	2013-07-19 22:51:48 UTC (rev 58424)
+++ trunk/blender/source/gameengine/Ketsji/KX_FontObject.cpp	2013-07-19 22:54:02 UTC (rev 58425)
@@ -76,12 +76,14 @@
 KX_FontObject::KX_FontObject(void* sgReplicationInfo,
                              SG_Callbacks callbacks,
                              RAS_IRenderTools* rendertools,
-                             Object *ob):
+                             Object *ob,
+                             bool do_color_management):
 	KX_GameObject(sgReplicationInfo, callbacks),
 	m_object(ob),
 	m_dpi(72),
 	m_resolution(1.f),
-	m_rendertools(rendertools)
+	m_rendertools(rendertools),
+	m_do_color_management(do_color_management)
 {
 	Curve *text = static_cast<Curve *> (ob->data);
 	m_text = split_string(text->str);
@@ -174,6 +176,22 @@
 	/* update the animated color */
 	this->GetObjectColor().getValue(m_color);
 
+	/* Font Objects don't use the glsl shader, this color management code is copied from gpu_shader_material.glsl */
+	float color[4];
+	for (int i = 0; i < 3; i++) {
+		if (m_do_color_management) {
+			float c = m_color[i];
+			if(c < 0.0031308)
+				c = (c < 0.0) ? 0.0: c * 12.92;
+			else
+				c = 1.055 * pow(c, 1.0/2.4) - 0.055;
+			color[i] = c;
+		}
+		else
+			color[i] = m_color[i];
+	}
+	color[3] = m_color[3];
+
 	/* HARDCODED MULTIPLICATION FACTOR - this will affect the render resolution directly */
 	const float RES = BGE_FONT_RES * m_resolution;
 
@@ -201,7 +219,7 @@
 			mat[13] -= spacing[1];
 			mat[14] -= spacing[2];
 		}
-		m_rendertools->RenderText3D(m_fontid, m_text[i], int(size), m_dpi, m_color, mat, aspect);
+		m_rendertools->RenderText3D(m_fontid, m_text[i], int(size), m_dpi, color, mat, aspect);
 	}
 }
 

Modified: trunk/blender/source/gameengine/Ketsji/KX_FontObject.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_FontObject.h	2013-07-19 22:51:48 UTC (rev 58424)
+++ trunk/blender/source/gameengine/Ketsji/KX_FontObject.h	2013-07-19 22:54:02 UTC (rev 58425)
@@ -42,7 +42,8 @@
 	KX_FontObject(void* sgReplicationInfo,
 	              SG_Callbacks callbacks,
 	              RAS_IRenderTools* rendertools,
-	              Object *ob);
+	              Object *ob,
+				  bool do_color_management);
 
 	virtual ~KX_FontObject();
 
@@ -69,6 +70,8 @@
 
 	class RAS_IRenderTools*	m_rendertools;	//needed for drawing routine
 
+	bool		m_do_color_management;
+
 #ifdef WITH_PYTHON
 	static PyObject*	pyattr_get_text(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
 	static int			pyattr_set_text(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);




More information about the Bf-blender-cvs mailing list