begin work on lighting system for 2D
nothing functional yet, just experimenting with API
This commit is contained in:
parent
c6eabbbec5
commit
67d357191f
6 changed files with 180 additions and 1 deletions
|
@ -2472,6 +2472,10 @@ void Tree::_notification(int p_what) {
|
|||
}
|
||||
}
|
||||
|
||||
if (p_what==NOTIFICATION_THEME_CHANGED) {
|
||||
update_cache();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1289,7 +1289,7 @@ const ShaderGraph::InOutParamInfo ShaderGraph::inout_param_info[]={
|
|||
{MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"Binormal","BINORMAL","",SLOT_TYPE_VEC,SLOT_IN},
|
||||
{MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"UV","vec3(UV,0);","",SLOT_TYPE_VEC,SLOT_IN},
|
||||
{MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"UV2","UV2","",SLOT_TYPE_VEC,SLOT_IN},
|
||||
{MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"UVScreen","SCREEN_UV","",SLOT_TYPE_VEC,SLOT_IN},
|
||||
{MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"UVScreen","vec3(SCREEN_UV,0)","",SLOT_TYPE_VEC,SLOT_IN},
|
||||
{MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"PointCoord","POINT_COORD","",SLOT_TYPE_VEC,SLOT_IN},
|
||||
{MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"Color","COLOR.rgb","",SLOT_TYPE_VEC,SLOT_IN},
|
||||
{MODE_MATERIAL,SHADER_TYPE_FRAGMENT,"Alpha","COLOR.a","",SLOT_TYPE_SCALAR,SLOT_IN},
|
||||
|
|
|
@ -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 *********/
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -999,6 +999,39 @@ public:
|
|||
virtual void canvas_item_set_shader_param(RID p_canvas_item, const StringName& p_param, const Variant& p_value)=0;
|
||||
virtual Variant canvas_item_get_shader_param(RID p_canvas_item, const StringName& p_param) const=0;
|
||||
|
||||
virtual RID canvas_light_create()=0;
|
||||
virtual void canvas_light_attach_to_canvas(RID p_light,RID p_canvas)=0;
|
||||
virtual void canvas_light_set_enabled(RID p_light, bool p_enabled)=0;
|
||||
virtual void canvas_light_set_transform(RID p_light, const Matrix32& p_transform)=0;
|
||||
virtual void canvas_light_set_texture(RID p_light, RID p_texture)=0;
|
||||
virtual void canvas_light_set_texture_offset(RID p_light, const Vector2& p_offset)=0;
|
||||
virtual void canvas_light_set_color(RID p_light, const Color& p_color)=0;
|
||||
virtual void canvas_light_set_height(RID p_light, float p_height)=0;
|
||||
virtual void canvas_light_set_z_range(RID p_light, int p_min_z,int p_max_z)=0;
|
||||
virtual void canvas_light_set_item_mask(RID p_light, int p_mask)=0;
|
||||
|
||||
enum CanvasLightBlendMode {
|
||||
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)=0;
|
||||
virtual void canvas_light_set_shadow_enabled(RID p_light, bool p_enabled)=0;
|
||||
virtual void canvas_light_set_shadow_buffer_size(RID p_light, int p_size)=0;
|
||||
virtual void canvas_light_set_shadow_filter(RID p_light, int p_size)=0;
|
||||
|
||||
|
||||
virtual RID canvas_light_occluder_create()=0;
|
||||
virtual void canvas_light_occluder_attach_to_canvas(RID p_occluder,RID p_canvas)=0;
|
||||
virtual void canvas_light_occluder_set_enabled(RID p_occluder,bool p_enabled)=0;
|
||||
virtual void canvas_light_occluder_set_shape(RID p_occluder,const DVector<Vector2>& p_shape)=0;
|
||||
|
||||
/* CURSOR */
|
||||
virtual void cursor_set_rotation(float p_rotation, int p_cursor = 0)=0; // radians
|
||||
virtual void cursor_set_texture(RID p_texture, const Point2 &p_center_offset = Point2(0, 0), int p_cursor=0)=0;
|
||||
|
|
Loading…
Reference in a new issue