summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenH <sketchyfun@gmail.com>2015-06-24 21:06:31 +0100
committerBenH <sketchyfun@gmail.com>2015-06-24 21:06:31 +0100
commitd807a2298145e72cdcb9290eb6c7e6c88df9848a (patch)
tree5c88615016f5966decbe1fab9f8f6baf1d858fd1
parent48f1d02da4795ba9d485fe5fe2bea907be2fc467 (diff)
Billboards were being displayed upside down when drawn to a render texture
Render texture's view transforms seem to be inverted, so when drawing billboards, the 'up' vector given to set_look_at() is also inverted and so the billboard gets drawn upside down.
-rw-r--r--drivers/gles2/rasterizer_gles2.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp
index efc92c5d9f..05ae85e096 100644
--- a/drivers/gles2/rasterizer_gles2.cpp
+++ b/drivers/gles2/rasterizer_gles2.cpp
@@ -6683,7 +6683,13 @@ void RasterizerGLES2::_render_list_forward(RenderList *p_render_list,const Trans
if (e->instance->billboard) {
Vector3 scale = xf.basis.get_scale();
- xf.set_look_at(xf.origin,xf.origin+p_view_transform.get_basis().get_axis(2),p_view_transform.get_basis().get_axis(1));
+
+ if (current_rt && current_rt_vflip) {
+ xf.set_look_at(xf.origin, xf.origin + p_view_transform.get_basis().get_axis(2), -p_view_transform.get_basis().get_axis(1));
+ } else {
+ xf.set_look_at(xf.origin, xf.origin + p_view_transform.get_basis().get_axis(2), p_view_transform.get_basis().get_axis(1));
+ }
+
xf.basis.scale(scale);
}
material_shader.set_uniform(MaterialShaderGLES2::WORLD_TRANSFORM, xf);