Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJorge Bernal <jbernalmartinez@gmail.com>2015-05-10 01:54:06 +0300
committerJorge Bernal <jbernalmartinez@gmail.com>2015-05-10 01:56:51 +0300
commitdc95ca92ca224d26423c5d63b33e7714a6a8c9ce (patch)
treec71096c7c22e2eca609458fa36e0bd397f5c2976 /source/gameengine
parent583fd3af659fc5526a150d30b6a7a5bc2f0d484f (diff)
BGE: Fix T43822 Videotexture does not use sky color for off-screen
rendering Make scene background color as default for render-to-texture instead of current blue color (0, 0, 255). It is very useful for mirrors setups. Reviewers: moguri, ben2610, sybren, panzergame, hg1 Reviewed By: panzergame, hg1, moguri Subscribers: mpan3 Differential Revision: https://developer.blender.org/D1287
Diffstat (limited to 'source/gameengine')
-rw-r--r--source/gameengine/Ketsji/KX_WorldInfo.cpp5
-rw-r--r--source/gameengine/Ketsji/KX_WorldInfo.h1
-rw-r--r--source/gameengine/VideoTexture/ImageRender.cpp19
-rw-r--r--source/gameengine/VideoTexture/ImageRender.h2
4 files changed, 23 insertions, 4 deletions
diff --git a/source/gameengine/Ketsji/KX_WorldInfo.cpp b/source/gameengine/Ketsji/KX_WorldInfo.cpp
index e4bf439501f..21e72504a2b 100644
--- a/source/gameengine/Ketsji/KX_WorldInfo.cpp
+++ b/source/gameengine/Ketsji/KX_WorldInfo.cpp
@@ -100,6 +100,11 @@ void KX_WorldInfo::setBackColor(float r, float g, float b)
}
}
+const float *KX_WorldInfo::getBackColor(void) const
+{
+ return m_backgroundcolor;
+}
+
void KX_WorldInfo::setMistType(short type)
{
m_misttype = type;
diff --git a/source/gameengine/Ketsji/KX_WorldInfo.h b/source/gameengine/Ketsji/KX_WorldInfo.h
index 64304e594cc..0e8fe3c730a 100644
--- a/source/gameengine/Ketsji/KX_WorldInfo.h
+++ b/source/gameengine/Ketsji/KX_WorldInfo.h
@@ -88,6 +88,7 @@ public:
void setMistIntensity(float intensity);
void setMistColor(float r, float g, float b);
void setBackColor(float r, float g, float b);
+ const float *getBackColor() const;
void setAmbientColor(float r, float g, float b);
void UpdateBackGround();
void UpdateWorldSettings();
diff --git a/source/gameengine/VideoTexture/ImageRender.cpp b/source/gameengine/VideoTexture/ImageRender.cpp
index 6a898ff50c2..2b2a6e0778b 100644
--- a/source/gameengine/VideoTexture/ImageRender.cpp
+++ b/source/gameengine/VideoTexture/ImageRender.cpp
@@ -75,8 +75,8 @@ ImageRender::ImageRender (KX_Scene *scene, KX_Camera * camera) :
m_mirrorHalfWidth(0.f),
m_mirrorHalfHeight(0.f)
{
- // initialize background color
- setBackground(0, 0, 255, 255);
+ // initialize background color to scene background color as default
+ setBackgroundFromScene(m_scene);
// retrieve rendering objects
m_engine = KX_GetActiveEngine();
m_rasterizer = m_engine->GetRasterizer();
@@ -100,6 +100,18 @@ void ImageRender::setBackground (int red, int green, int blue, int alpha)
m_background[3] = (alpha < 0) ? 0.f : (alpha > 255) ? 1.f : float(alpha)/255.f;
}
+// set background color from scene
+void ImageRender::setBackgroundFromScene (KX_Scene *scene)
+{
+ if (scene) {
+ const float *background_color = scene->GetWorldInfo()->getBackColor();
+ setBackground((int) (background_color[0] * 255.0f), (int) (background_color[1] * 255.0f), (int) (background_color[2] * 255.0f), 255);
+ }
+ else {
+ setBackground(0, 0, 255, 255);
+ }
+}
+
// capture image from viewport
void ImageRender::calcImage (unsigned int texId, double ts)
@@ -733,7 +745,8 @@ ImageRender::ImageRender (KX_Scene *scene, KX_GameObject *observer, KX_GameObjec
m_mirrorX = m_mirrorY.cross(m_mirrorZ);
m_render = true;
- setBackground(0, 0, 255, 255);
+ // set mirror background color to scene background color as default
+ setBackgroundFromScene(m_scene);
}
diff --git a/source/gameengine/VideoTexture/ImageRender.h b/source/gameengine/VideoTexture/ImageRender.h
index 98dceeaafe1..bdf442c82d0 100644
--- a/source/gameengine/VideoTexture/ImageRender.h
+++ b/source/gameengine/VideoTexture/ImageRender.h
@@ -100,7 +100,7 @@ protected:
void Render();
void SetupRenderFrame(KX_Scene *scene, KX_Camera* cam);
void RenderFrame(KX_Scene* scene, KX_Camera* cam);
- void SetBackGround(KX_WorldInfo* wi);
+ void setBackgroundFromScene(KX_Scene *scene);
void SetWorldSettings(KX_WorldInfo* wi);
};