diff options
| author | Juan Linietsky | 2015-03-10 21:05:49 -0300 |
|---|---|---|
| committer | Juan Linietsky | 2015-03-10 21:05:49 -0300 |
| commit | a6f96f46b779a815b03974fece21728fe32e88d2 (patch) | |
| tree | 8f450cd516f009e38d9909255bbca283a8868368 /servers/visual | |
| parent | 57380f9aba2352755273acb9dcd5f20351e668ce (diff) | |
| download | godot-a6f96f46b779a815b03974fece21728fe32e88d2.tar.gz godot-a6f96f46b779a815b03974fece21728fe32e88d2.tar.zst godot-a6f96f46b779a815b03974fece21728fe32e88d2.zip | |
small optimizations to isometric light demo
should work faster, and even faster if exported.. as textures have been
optimized.
Diffstat (limited to 'servers/visual')
| -rw-r--r-- | servers/visual/rasterizer.h | 2 | ||||
| -rw-r--r-- | servers/visual/visual_server_raster.cpp | 10 | ||||
| -rw-r--r-- | servers/visual/visual_server_raster.h | 1 | ||||
| -rw-r--r-- | servers/visual/visual_server_wrap_mt.h | 1 |
4 files changed, 14 insertions, 0 deletions
diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h index d2a1c48c4..869ab83d9 100644 --- a/servers/visual/rasterizer.h +++ b/servers/visual/rasterizer.h @@ -577,6 +577,7 @@ public: Color color; Matrix32 xform; float height; + float scale; int z_min; int z_max; int layer_min; @@ -614,6 +615,7 @@ public: layer_min=0; layer_max=0; item_mask=1; + scale=1.0; item_shadow_mask=-1; subtract=false; texture_cache=NULL; diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp index 1c16f51e8..2c81dfbb3 100644 --- a/servers/visual/visual_server_raster.cpp +++ b/servers/visual/visual_server_raster.cpp @@ -3899,6 +3899,15 @@ void VisualServerRaster::canvas_light_set_transform(RID p_light, const Matrix32& clight->xform=p_transform; } +void VisualServerRaster::canvas_light_set_scale(RID p_light, float p_scale) { + + Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light); + ERR_FAIL_COND(!clight); + clight->scale=p_scale; + +} + + void VisualServerRaster::canvas_light_set_texture(RID p_light, RID p_texture){ Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light); @@ -6937,6 +6946,7 @@ void VisualServerRaster::_draw_viewport(Viewport *p_viewport,int p_ofs_x, int p_ if (cl->enabled && cl->texture.is_valid()) { //not super efficient.. Size2 tsize(rasterizer->texture_get_width(cl->texture),rasterizer->texture_get_height(cl->texture)); + tsize*=cl->scale; Vector2 offset=tsize/2.0; cl->rect_cache=Rect2(-offset+cl->texture_offset,tsize); cl->xform_cache=xf * cl->xform; diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h index 7d7bbe1d7..1622871d4 100644 --- a/servers/visual/visual_server_raster.h +++ b/servers/visual/visual_server_raster.h @@ -1157,6 +1157,7 @@ public: virtual void canvas_light_attach_to_canvas(RID p_light,RID p_canvas); virtual void canvas_light_set_enabled(RID p_light, bool p_enabled); virtual void canvas_light_set_transform(RID p_light, const Matrix32& p_transform); + virtual void canvas_light_set_scale(RID p_light, float p_scale); virtual void canvas_light_set_texture(RID p_light, RID p_texture); virtual void canvas_light_set_texture_offset(RID p_light, const Vector2& p_offset); virtual void canvas_light_set_color(RID p_light, const Color& p_color); diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h index bccb096e1..402250369 100644 --- a/servers/visual/visual_server_wrap_mt.h +++ b/servers/visual/visual_server_wrap_mt.h @@ -1151,6 +1151,7 @@ public: FUNC2(canvas_light_attach_to_canvas,RID,RID); FUNC2(canvas_light_set_enabled,RID,bool); FUNC2(canvas_light_set_transform,RID,const Matrix32&); + FUNC2(canvas_light_set_scale,RID,float); FUNC2(canvas_light_set_texture,RID,RID); FUNC2(canvas_light_set_texture_offset,RID,const Vector2&); FUNC2(canvas_light_set_color,RID,const Color&); |
