summaryrefslogtreecommitdiff
path: root/drivers/gles2
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2016-09-10 12:12:26 -0300
committerGitHub <noreply@github.com>2016-09-10 12:12:26 -0300
commite2aad59b59e9cf9791bd7b21383d6c85c4b46203 (patch)
tree932e45bcf066b2feb51e016e4ebce8d8ee5005d7 /drivers/gles2
parent3c30a3b1aadfdf0c79162d8c6e8f8c12b4ad08a1 (diff)
parentc3b9ef82296c89b09b1c4285a41b10f7a0e18d2a (diff)
Merge pull request #5962 from Alex-doc/Y_billboard
Implements Y billboard
Diffstat (limited to 'drivers/gles2')
-rw-r--r--drivers/gles2/rasterizer_gles2.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp
index 1986ddced2..8350fb0674 100644
--- a/drivers/gles2/rasterizer_gles2.cpp
+++ b/drivers/gles2/rasterizer_gles2.cpp
@@ -6777,7 +6777,7 @@ void RasterizerGLES2::_render_list_forward(RenderList *p_render_list,const Trans
}
}
- if (e->instance->billboard || e->instance->depth_scale) {
+ if (e->instance->billboard || e->instance->billboard_y || e->instance->depth_scale) {
Transform xf=e->instance->transform;
if (e->instance->depth_scale) {
@@ -6808,6 +6808,21 @@ void RasterizerGLES2::_render_list_forward(RenderList *p_render_list,const Trans
xf.basis.scale(scale);
}
+
+ if (e->instance->billboard_y) {
+
+ Vector3 scale = xf.basis.get_scale();
+ Vector3 look_at = p_view_transform.get_origin();
+ look_at.y = 0.0;
+ Vector3 look_at_norm = look_at.normalized();
+
+ if (current_rt && current_rt_vflip) {
+ xf.set_look_at(xf.origin,xf.origin + look_at_norm, Vector3(0.0, -1.0, 0.0));
+ } else {
+ xf.set_look_at(xf.origin,xf.origin + look_at_norm, Vector3(0.0, 1.0, 0.0));
+ }
+ xf.basis.scale(scale);
+ }
material_shader.set_uniform(MaterialShaderGLES2::WORLD_TRANSFORM, xf);
} else {