summaryrefslogtreecommitdiff
path: root/servers/visual
diff options
context:
space:
mode:
authorJuan Linietsky <juan@okamstudio.com>2015-01-22 11:07:16 -0300
committerJuan Linietsky <juan@okamstudio.com>2015-01-22 11:07:16 -0300
commit67d357191ff74b2cfc80015941363a97e7ee19fd (patch)
tree7073fe351796714b6a2c50898ab919e75bec81c6 /servers/visual
parentc6eabbbec5a9fec7a0d473fe67a544af3454c3d2 (diff)
begin work on lighting system for 2D
nothing functional yet, just experimenting with API
Diffstat (limited to 'servers/visual')
-rw-r--r--servers/visual/visual_server_raster.cpp85
-rw-r--r--servers/visual/visual_server_raster.h34
-rw-r--r--servers/visual/visual_server_wrap_mt.h23
3 files changed, 142 insertions, 0 deletions
diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp
index a3aa573e35..fc32702a12 100644
--- a/servers/visual/visual_server_raster.cpp
+++ b/servers/visual/visual_server_raster.cpp
@@ -3819,6 +3819,91 @@ void VisualServerRaster::canvas_item_raise(RID p_item) {
}
+/***** CANVAS LIGHT *******/
+
+RID VisualServerRaster::canvas_light_create() {
+
+ return RID();
+}
+
+void VisualServerRaster::canvas_light_attach_to_canvas(RID p_light,RID p_canvas){
+
+
+}
+void VisualServerRaster::canvas_light_set_enabled(RID p_light, bool p_enabled){
+
+
+}
+void VisualServerRaster::canvas_light_set_transform(RID p_light, const Matrix32& p_transform){
+
+
+}
+void VisualServerRaster::canvas_light_set_texture(RID p_light, RID p_texture){
+
+
+}
+void VisualServerRaster::canvas_light_set_texture_offset(RID p_light, const Vector2& p_offset){
+
+
+}
+void VisualServerRaster::canvas_light_set_color(RID p_light, const Color& p_color){
+
+
+}
+void VisualServerRaster::canvas_light_set_height(RID p_light, float p_height){
+
+
+}
+void VisualServerRaster::canvas_light_set_z_range(RID p_light, int p_min_z,int p_max_z){
+
+
+}
+void VisualServerRaster::canvas_light_set_item_mask(RID p_light, int p_mask){
+
+
+}
+
+void VisualServerRaster::canvas_light_set_blend_mode(RID p_light, CanvasLightBlendMode p_blend_mode){
+
+
+}
+void VisualServerRaster::canvas_light_set_shadow_enabled(RID p_light, bool p_enabled){
+
+
+}
+void VisualServerRaster::canvas_light_set_shadow_buffer_size(RID p_light, int p_size){
+
+
+}
+void VisualServerRaster::canvas_light_set_shadow_filter(RID p_light, int p_size){
+
+
+}
+
+/****** CANVAS LIGHT OCCLUDER ******/
+
+RID VisualServerRaster::canvas_light_occluder_create() {
+
+ return RID();
+}
+
+void VisualServerRaster::canvas_light_occluder_attach_to_canvas(RID p_occluder,RID p_canvas) {
+
+
+}
+
+void VisualServerRaster::canvas_light_occluder_set_enabled(RID p_occluder,bool p_enabled){
+
+
+}
+
+void VisualServerRaster::canvas_light_occluder_set_shape(RID p_occluder,const DVector<Vector2>& p_shape){
+
+
+}
+
+
+
/******** CANVAS *********/
diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h
index 6c4e15827a..57032ab441 100644
--- a/servers/visual/visual_server_raster.h
+++ b/servers/visual/visual_server_raster.h
@@ -1122,9 +1122,43 @@ public:
virtual void canvas_item_set_use_parent_shader(RID p_item, bool p_enable);
+
virtual void canvas_item_set_shader_param(RID p_canvas_item, const StringName& p_param, const Variant& p_value);
virtual Variant canvas_item_get_shader_param(RID p_canvas_item, const StringName& p_param) const;
+ virtual RID canvas_light_create();
+ 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_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);
+ virtual void canvas_light_set_height(RID p_light, float p_height);
+ virtual void canvas_light_set_z_range(RID p_light, int p_min_z,int p_max_z);
+ virtual void canvas_light_set_item_mask(RID p_light, int p_mask);
+
+ enum CanvasightBlendMode {
+ CANVAS_LIGHT_BLEND_ADD,
+ CANVAS_LIGHT_BLEND_SUB,
+ CANVAS_LIGHT_BLEND_MULTIPLY,
+ CANVAS_LIGHT_BLEND_DODGE,
+ CANVAS_LIGHT_BLEND_BURN,
+ CANVAS_LIGHT_BLEND_LIGHTEN,
+ CANVAS_LIGHT_BLEND_DARKEN,
+ CANVAS_LIGHT_BLEND_OVERLAY,
+ CANVAS_LIGHT_BLEND_SCREEN,
+ };
+ virtual void canvas_light_set_blend_mode(RID p_light, CanvasLightBlendMode p_blend_mode);
+ virtual void canvas_light_set_shadow_enabled(RID p_light, bool p_enabled);
+ virtual void canvas_light_set_shadow_buffer_size(RID p_light, int p_size);
+ virtual void canvas_light_set_shadow_filter(RID p_light, int p_size);
+
+
+ virtual RID canvas_light_occluder_create();
+ virtual void canvas_light_occluder_attach_to_canvas(RID p_occluder,RID p_canvas);
+ virtual void canvas_light_occluder_set_enabled(RID p_occluder,bool p_enabled);
+ virtual void canvas_light_occluder_set_shape(RID p_occluder,const DVector<Vector2>& p_shape);
+
virtual void canvas_item_clear(RID p_item);
virtual void canvas_item_raise(RID p_item);
diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h
index b59fdbc66a..9574dff018 100644
--- a/servers/visual/visual_server_wrap_mt.h
+++ b/servers/visual/visual_server_wrap_mt.h
@@ -1146,6 +1146,29 @@ public:
FUNC1(canvas_item_clear,RID);
FUNC1(canvas_item_raise,RID);
+ /* CANVAS LIGHT */
+ FUNC0R(RID,canvas_light_create);
+ 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_texture,RID,RID);
+ FUNC2(canvas_light_set_texture_offset,RID,const Vector2&);
+ FUNC2(canvas_light_set_color,RID,const Color&);
+ FUNC2(canvas_light_set_height,RID,float);
+ FUNC3(canvas_light_set_z_range,RID,int,int);
+ FUNC2(canvas_light_set_item_mask,RID,int);
+
+ FUNC2(canvas_light_set_blend_mode,RID,CanvasLightBlendMode);
+ FUNC2(canvas_light_set_shadow_enabled,RID,bool);
+ FUNC2(canvas_light_set_shadow_buffer_size,RID,int);
+ FUNC2(canvas_light_set_shadow_filter,RID,int);
+
+ /* CANVAS OCCLUDER */
+
+ FUNC0R(RID,canvas_light_occluder_create);
+ FUNC2(canvas_light_occluder_attach_to_canvas,RID,RID);
+ FUNC2(canvas_light_occluder_set_enabled,RID,bool);
+ FUNC2(canvas_light_occluder_set_shape,RID,const DVector<Vector2>&);
/* CURSOR */
FUNC2(cursor_set_rotation,float , int ); // radians