Ability to set a custom FOV makes it possible to use sky on orthogonal view. Closes #9186
This commit is contained in:
parent
2c5fa0947d
commit
d4e20555e8
|
@ -799,12 +799,12 @@ void RasterizerSceneGLES3::environment_set_sky(RID p_env, RID p_sky) {
|
||||||
env->sky = p_sky;
|
env->sky = p_sky;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RasterizerSceneGLES3::environment_set_sky_scale(RID p_env, float p_scale) {
|
void RasterizerSceneGLES3::environment_set_sky_custom_fov(RID p_env, float p_scale) {
|
||||||
|
|
||||||
Environment *env = environment_owner.getornull(p_env);
|
Environment *env = environment_owner.getornull(p_env);
|
||||||
ERR_FAIL_COND(!env);
|
ERR_FAIL_COND(!env);
|
||||||
|
|
||||||
env->sky_scale = p_scale;
|
env->sky_custom_fov = p_scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RasterizerSceneGLES3::environment_set_bg_color(RID p_env, const Color &p_color) {
|
void RasterizerSceneGLES3::environment_set_bg_color(RID p_env, const Color &p_color) {
|
||||||
|
@ -2319,7 +2319,7 @@ void RasterizerSceneGLES3::_add_geometry_with_material(RasterizerStorageGLES3::G
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RasterizerSceneGLES3::_draw_sky(RasterizerStorageGLES3::Sky *p_sky, const CameraMatrix &p_projection, const Transform &p_transform, bool p_vflip, float p_scale, float p_energy) {
|
void RasterizerSceneGLES3::_draw_sky(RasterizerStorageGLES3::Sky *p_sky, const CameraMatrix &p_projection, const Transform &p_transform, bool p_vflip, float p_custom_fov, float p_energy) {
|
||||||
|
|
||||||
if (!p_sky)
|
if (!p_sky)
|
||||||
return;
|
return;
|
||||||
|
@ -2365,16 +2365,28 @@ void RasterizerSceneGLES3::_draw_sky(RasterizerStorageGLES3::Sky *p_sky, const C
|
||||||
|
|
||||||
//sky uv vectors
|
//sky uv vectors
|
||||||
float vw, vh, zn;
|
float vw, vh, zn;
|
||||||
p_projection.get_viewport_size(vw, vh);
|
CameraMatrix camera;
|
||||||
zn = p_projection.get_z_near();
|
|
||||||
|
|
||||||
float scale = p_scale;
|
if (p_custom_fov) {
|
||||||
|
|
||||||
|
float near = p_projection.get_z_near();
|
||||||
|
float far = p_projection.get_z_far();
|
||||||
|
float aspect = p_projection.get_aspect();
|
||||||
|
|
||||||
|
camera.set_perspective(p_custom_fov, aspect, near, far);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
camera = p_projection;
|
||||||
|
}
|
||||||
|
|
||||||
|
camera.get_viewport_size(vw, vh);
|
||||||
|
zn = p_projection.get_z_near();
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
|
|
||||||
Vector3 uv = vertices[i * 2 + 1];
|
Vector3 uv = vertices[i * 2 + 1];
|
||||||
uv.x = (uv.x * 2.0 - 1.0) * vw * scale;
|
uv.x = (uv.x * 2.0 - 1.0) * vw;
|
||||||
uv.y = -(uv.y * 2.0 - 1.0) * vh * scale;
|
uv.y = -(uv.y * 2.0 - 1.0) * vh;
|
||||||
uv.z = -zn;
|
uv.z = -zn;
|
||||||
vertices[i * 2 + 1] = p_transform.basis.xform(uv).normalized();
|
vertices[i * 2 + 1] = p_transform.basis.xform(uv).normalized();
|
||||||
vertices[i * 2 + 1].z = -vertices[i * 2 + 1].z;
|
vertices[i * 2 + 1].z = -vertices[i * 2 + 1].z;
|
||||||
|
@ -4258,7 +4270,7 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER,storage->frame.current_rt->buffers.fbo); //switch to alpha fbo for sky, only diffuse/ambient matters
|
glBindFramebuffer(GL_FRAMEBUFFER,storage->frame.current_rt->buffers.fbo); //switch to alpha fbo for sky, only diffuse/ambient matters
|
||||||
*/
|
*/
|
||||||
|
|
||||||
_draw_sky(sky, p_cam_projection, p_cam_transform, false, env->sky_scale, env->bg_energy);
|
_draw_sky(sky, p_cam_projection, p_cam_transform, false, env->sky_custom_fov, env->bg_energy);
|
||||||
}
|
}
|
||||||
|
|
||||||
//_render_list_forward(&alpha_render_list,camera_transform,camera_transform_inverse,camera_projection,false,fragment_lighting,true);
|
//_render_list_forward(&alpha_render_list,camera_transform,camera_transform_inverse,camera_projection,false,fragment_lighting,true);
|
||||||
|
|
|
@ -352,7 +352,7 @@ public:
|
||||||
VS::EnvironmentBG bg_mode;
|
VS::EnvironmentBG bg_mode;
|
||||||
|
|
||||||
RID sky;
|
RID sky;
|
||||||
float sky_scale;
|
float sky_custom_fov;
|
||||||
|
|
||||||
Color bg_color;
|
Color bg_color;
|
||||||
float bg_energy;
|
float bg_energy;
|
||||||
|
@ -435,7 +435,7 @@ public:
|
||||||
|
|
||||||
Environment() {
|
Environment() {
|
||||||
bg_mode = VS::ENV_BG_CLEAR_COLOR;
|
bg_mode = VS::ENV_BG_CLEAR_COLOR;
|
||||||
sky_scale = 1.0;
|
sky_custom_fov = 0.0;
|
||||||
bg_energy = 1.0;
|
bg_energy = 1.0;
|
||||||
sky_ambient = 0;
|
sky_ambient = 0;
|
||||||
ambient_energy = 1.0;
|
ambient_energy = 1.0;
|
||||||
|
@ -520,7 +520,7 @@ public:
|
||||||
|
|
||||||
virtual void environment_set_background(RID p_env, VS::EnvironmentBG p_bg);
|
virtual void environment_set_background(RID p_env, VS::EnvironmentBG p_bg);
|
||||||
virtual void environment_set_sky(RID p_env, RID p_sky);
|
virtual void environment_set_sky(RID p_env, RID p_sky);
|
||||||
virtual void environment_set_sky_scale(RID p_env, float p_scale);
|
virtual void environment_set_sky_custom_fov(RID p_env, float p_scale);
|
||||||
virtual void environment_set_bg_color(RID p_env, const Color &p_color);
|
virtual void environment_set_bg_color(RID p_env, const Color &p_color);
|
||||||
virtual void environment_set_bg_energy(RID p_env, float p_energy);
|
virtual void environment_set_bg_energy(RID p_env, float p_energy);
|
||||||
virtual void environment_set_canvas_max_layer(RID p_env, int p_max_layer);
|
virtual void environment_set_canvas_max_layer(RID p_env, int p_max_layer);
|
||||||
|
@ -811,7 +811,7 @@ public:
|
||||||
|
|
||||||
_FORCE_INLINE_ void _add_geometry_with_material(RasterizerStorageGLES3::Geometry *p_geometry, InstanceBase *p_instance, RasterizerStorageGLES3::GeometryOwner *p_owner, RasterizerStorageGLES3::Material *p_material, bool p_depth_pass);
|
_FORCE_INLINE_ void _add_geometry_with_material(RasterizerStorageGLES3::Geometry *p_geometry, InstanceBase *p_instance, RasterizerStorageGLES3::GeometryOwner *p_owner, RasterizerStorageGLES3::Material *p_material, bool p_depth_pass);
|
||||||
|
|
||||||
void _draw_sky(RasterizerStorageGLES3::Sky *p_sky, const CameraMatrix &p_projection, const Transform &p_transform, bool p_vflip, float p_scale, float p_energy);
|
void _draw_sky(RasterizerStorageGLES3::Sky *p_sky, const CameraMatrix &p_projection, const Transform &p_transform, bool p_vflip, float p_custom_fov, float p_energy);
|
||||||
|
|
||||||
void _setup_environment(Environment *env, const CameraMatrix &p_cam_projection, const Transform &p_cam_transform);
|
void _setup_environment(Environment *env, const CameraMatrix &p_cam_projection, const Transform &p_cam_transform);
|
||||||
void _setup_directional_light(int p_index, const Transform &p_camera_inverse_transform, bool p_use_shadows);
|
void _setup_directional_light(int p_index, const Transform &p_camera_inverse_transform, bool p_use_shadows);
|
||||||
|
|
|
@ -700,9 +700,7 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() {
|
||||||
|
|
||||||
/** CANVAS ITEM SHADER **/
|
/** CANVAS ITEM SHADER **/
|
||||||
|
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["SRC_VERTEX"] = "vertex";
|
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["VERTEX"] = "outvec.xy";
|
actions[VS::SHADER_CANVAS_ITEM].renames["VERTEX"] = "outvec.xy";
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["VERTEX_COLOR"] = "vertex_color";
|
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["UV"] = "uv_interp";
|
actions[VS::SHADER_CANVAS_ITEM].renames["UV"] = "uv_interp";
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["POINT_SIZE"] = "gl_PointSize";
|
actions[VS::SHADER_CANVAS_ITEM].renames["POINT_SIZE"] = "gl_PointSize";
|
||||||
|
|
||||||
|
@ -711,6 +709,7 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() {
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["EXTRA_MATRIX"] == "extra_matrix";
|
actions[VS::SHADER_CANVAS_ITEM].renames["EXTRA_MATRIX"] == "extra_matrix";
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["TIME"] = "time";
|
actions[VS::SHADER_CANVAS_ITEM].renames["TIME"] = "time";
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["AT_LIGHT_PASS"] = "at_light_pass";
|
actions[VS::SHADER_CANVAS_ITEM].renames["AT_LIGHT_PASS"] = "at_light_pass";
|
||||||
|
actions[VS::SHADER_CANVAS_ITEM].renames["INSTANCE_CUSTOM"] = "instance_custom";
|
||||||
|
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["COLOR"] = "color";
|
actions[VS::SHADER_CANVAS_ITEM].renames["COLOR"] = "color";
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["NORMAL"] = "normal";
|
actions[VS::SHADER_CANVAS_ITEM].renames["NORMAL"] = "normal";
|
||||||
|
@ -720,6 +719,7 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() {
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["COLOR"] = "color";
|
actions[VS::SHADER_CANVAS_ITEM].renames["COLOR"] = "color";
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["TEXTURE"] = "color_texture";
|
actions[VS::SHADER_CANVAS_ITEM].renames["TEXTURE"] = "color_texture";
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["TEXTURE_PIXEL_SIZE"] = "color_texpixel_size";
|
actions[VS::SHADER_CANVAS_ITEM].renames["TEXTURE_PIXEL_SIZE"] = "color_texpixel_size";
|
||||||
|
actions[VS::SHADER_CANVAS_ITEM].renames["NORMAL_TEXTURE"] = "normal_texture";
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["SCREEN_UV"] = "screen_uv";
|
actions[VS::SHADER_CANVAS_ITEM].renames["SCREEN_UV"] = "screen_uv";
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["SCREEN_TEXTURE"] = "screen_texture";
|
actions[VS::SHADER_CANVAS_ITEM].renames["SCREEN_TEXTURE"] = "screen_texture";
|
||||||
actions[VS::SHADER_CANVAS_ITEM].renames["SCREEN_PIXEL_SIZE"] = "screen_pixel_size";
|
actions[VS::SHADER_CANVAS_ITEM].renames["SCREEN_PIXEL_SIZE"] = "screen_pixel_size";
|
||||||
|
|
|
@ -105,13 +105,16 @@ VERTEX_SHADER_GLOBALS
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
|
|
||||||
vec4 vertex_color = color_attrib;
|
vec4 color = color_attrib;
|
||||||
|
|
||||||
#ifdef USE_INSTANCING
|
#ifdef USE_INSTANCING
|
||||||
mat4 extra_matrix2 = extra_matrix * transpose(mat4(instance_xform0,instance_xform1,instance_xform2,vec4(0.0,0.0,0.0,1.0)));
|
mat4 extra_matrix2 = extra_matrix * transpose(mat4(instance_xform0,instance_xform1,instance_xform2,vec4(0.0,0.0,0.0,1.0)));
|
||||||
vertex_color*=instance_color;
|
color*=instance_color;
|
||||||
|
vec4 instance_custom = instance_custom_data;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
mat4 extra_matrix2 = extra_matrix;
|
mat4 extra_matrix2 = extra_matrix;
|
||||||
|
vec4 instance_custom = vec4(0.0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_TEXTURE_RECT
|
#ifdef USE_TEXTURE_RECT
|
||||||
|
@ -135,7 +138,7 @@ void main() {
|
||||||
|
|
||||||
//compute h and v frames and adjust UV interp for animation
|
//compute h and v frames and adjust UV interp for animation
|
||||||
int total_frames = h_frames * v_frames;
|
int total_frames = h_frames * v_frames;
|
||||||
int frame = min(int(float(total_frames) *instance_custom_data.z),total_frames-1);
|
int frame = min(int(float(total_frames) *instance_custom.z),total_frames-1);
|
||||||
float frame_w = 1.0/float(h_frames);
|
float frame_w = 1.0/float(h_frames);
|
||||||
float frame_h = 1.0/float(v_frames);
|
float frame_h = 1.0/float(v_frames);
|
||||||
uv_interp.x = uv_interp.x * frame_w + frame_w * float(frame % h_frames);
|
uv_interp.x = uv_interp.x * frame_w + frame_w * float(frame % h_frames);
|
||||||
|
@ -146,7 +149,6 @@ void main() {
|
||||||
#define extra_matrix extra_matrix2
|
#define extra_matrix extra_matrix2
|
||||||
|
|
||||||
{
|
{
|
||||||
vec2 src_vtx=outvec.xy;
|
|
||||||
|
|
||||||
VERTEX_SHADER_CODE
|
VERTEX_SHADER_CODE
|
||||||
|
|
||||||
|
@ -165,7 +167,7 @@ VERTEX_SHADER_CODE
|
||||||
|
|
||||||
#undef extra_matrix
|
#undef extra_matrix
|
||||||
|
|
||||||
color_interp = vertex_color;
|
color_interp = color;
|
||||||
|
|
||||||
#ifdef USE_PIXEL_SNAP
|
#ifdef USE_PIXEL_SNAP
|
||||||
|
|
||||||
|
|
|
@ -55,12 +55,11 @@ void Environment::set_sky(const Ref<Sky> &p_sky) {
|
||||||
VS::get_singleton()->environment_set_sky(environment, sb_rid);
|
VS::get_singleton()->environment_set_sky(environment, sb_rid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Environment::set_sky_scale(float p_scale) {
|
void Environment::set_sky_custom_fov(float p_scale) {
|
||||||
|
|
||||||
bg_sky_scale = p_scale;
|
bg_sky_custom_fov = p_scale;
|
||||||
VS::get_singleton()->environment_set_sky_scale(environment, p_scale);
|
VS::get_singleton()->environment_set_sky_custom_fov(environment, p_scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Environment::set_bg_color(const Color &p_color) {
|
void Environment::set_bg_color(const Color &p_color) {
|
||||||
|
|
||||||
bg_color = p_color;
|
bg_color = p_color;
|
||||||
|
@ -101,9 +100,9 @@ Ref<Sky> Environment::get_sky() const {
|
||||||
return bg_sky;
|
return bg_sky;
|
||||||
}
|
}
|
||||||
|
|
||||||
float Environment::get_sky_scale() const {
|
float Environment::get_sky_custom_fov() const {
|
||||||
|
|
||||||
return bg_sky_scale;
|
return bg_sky_custom_fov;
|
||||||
}
|
}
|
||||||
|
|
||||||
Color Environment::get_bg_color() const {
|
Color Environment::get_bg_color() const {
|
||||||
|
@ -268,7 +267,7 @@ Ref<Texture> Environment::get_adjustment_color_correction() const {
|
||||||
|
|
||||||
void Environment::_validate_property(PropertyInfo &property) const {
|
void Environment::_validate_property(PropertyInfo &property) const {
|
||||||
|
|
||||||
if (property.name == "background_sky" || property.name == "background_sky_scale" || property.name == "ambient_light/sky_contribution") {
|
if (property.name == "background_sky" || property.name == "background_sky_custom_fov" || property.name == "ambient_light/sky_contribution") {
|
||||||
if (bg_mode != BG_SKY && bg_mode != BG_COLOR_SKY) {
|
if (bg_mode != BG_SKY && bg_mode != BG_COLOR_SKY) {
|
||||||
property.usage = PROPERTY_USAGE_NOEDITOR;
|
property.usage = PROPERTY_USAGE_NOEDITOR;
|
||||||
}
|
}
|
||||||
|
@ -820,7 +819,7 @@ void Environment::_bind_methods() {
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("set_background", "mode"), &Environment::set_background);
|
ClassDB::bind_method(D_METHOD("set_background", "mode"), &Environment::set_background);
|
||||||
ClassDB::bind_method(D_METHOD("set_sky", "sky"), &Environment::set_sky);
|
ClassDB::bind_method(D_METHOD("set_sky", "sky"), &Environment::set_sky);
|
||||||
ClassDB::bind_method(D_METHOD("set_sky_scale", "scale"), &Environment::set_sky_scale);
|
ClassDB::bind_method(D_METHOD("set_sky_custom_fov", "scale"), &Environment::set_sky_custom_fov);
|
||||||
ClassDB::bind_method(D_METHOD("set_bg_color", "color"), &Environment::set_bg_color);
|
ClassDB::bind_method(D_METHOD("set_bg_color", "color"), &Environment::set_bg_color);
|
||||||
ClassDB::bind_method(D_METHOD("set_bg_energy", "energy"), &Environment::set_bg_energy);
|
ClassDB::bind_method(D_METHOD("set_bg_energy", "energy"), &Environment::set_bg_energy);
|
||||||
ClassDB::bind_method(D_METHOD("set_canvas_max_layer", "layer"), &Environment::set_canvas_max_layer);
|
ClassDB::bind_method(D_METHOD("set_canvas_max_layer", "layer"), &Environment::set_canvas_max_layer);
|
||||||
|
@ -830,7 +829,7 @@ void Environment::_bind_methods() {
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_background"), &Environment::get_background);
|
ClassDB::bind_method(D_METHOD("get_background"), &Environment::get_background);
|
||||||
ClassDB::bind_method(D_METHOD("get_sky"), &Environment::get_sky);
|
ClassDB::bind_method(D_METHOD("get_sky"), &Environment::get_sky);
|
||||||
ClassDB::bind_method(D_METHOD("get_sky_scale"), &Environment::get_sky_scale);
|
ClassDB::bind_method(D_METHOD("get_sky_custom_fov"), &Environment::get_sky_custom_fov);
|
||||||
ClassDB::bind_method(D_METHOD("get_bg_color"), &Environment::get_bg_color);
|
ClassDB::bind_method(D_METHOD("get_bg_color"), &Environment::get_bg_color);
|
||||||
ClassDB::bind_method(D_METHOD("get_bg_energy"), &Environment::get_bg_energy);
|
ClassDB::bind_method(D_METHOD("get_bg_energy"), &Environment::get_bg_energy);
|
||||||
ClassDB::bind_method(D_METHOD("get_canvas_max_layer"), &Environment::get_canvas_max_layer);
|
ClassDB::bind_method(D_METHOD("get_canvas_max_layer"), &Environment::get_canvas_max_layer);
|
||||||
|
@ -841,7 +840,7 @@ void Environment::_bind_methods() {
|
||||||
ADD_GROUP("Background", "background_");
|
ADD_GROUP("Background", "background_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "background_mode", PROPERTY_HINT_ENUM, "Clear Color,Custom Color,Sky,Color+Sky,Canvas,Keep"), "set_background", "get_background");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "background_mode", PROPERTY_HINT_ENUM, "Clear Color,Custom Color,Sky,Color+Sky,Canvas,Keep"), "set_background", "get_background");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "background_sky", PROPERTY_HINT_RESOURCE_TYPE, "Sky"), "set_sky", "get_sky");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "background_sky", PROPERTY_HINT_RESOURCE_TYPE, "Sky"), "set_sky", "get_sky");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "background_sky_scale", PROPERTY_HINT_RANGE, "0,32,0.01"), "set_sky_scale", "get_sky_scale");
|
ADD_PROPERTY(PropertyInfo(Variant::REAL, "background_sky_custom_fov", PROPERTY_HINT_RANGE, "0,180,0.1"), "set_sky_custom_fov", "get_sky_custom_fov");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "background_color"), "set_bg_color", "get_bg_color");
|
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "background_color"), "set_bg_color", "get_bg_color");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "background_energy", PROPERTY_HINT_RANGE, "0,16,0.01"), "set_bg_energy", "get_bg_energy");
|
ADD_PROPERTY(PropertyInfo(Variant::REAL, "background_energy", PROPERTY_HINT_RANGE, "0,16,0.01"), "set_bg_energy", "get_bg_energy");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "background_canvas_max_layer", PROPERTY_HINT_RANGE, "-1000,1000,1"), "set_canvas_max_layer", "get_canvas_max_layer");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "background_canvas_max_layer", PROPERTY_HINT_RANGE, "-1000,1000,1"), "set_canvas_max_layer", "get_canvas_max_layer");
|
||||||
|
@ -1142,7 +1141,7 @@ Environment::Environment() {
|
||||||
environment = VS::get_singleton()->environment_create();
|
environment = VS::get_singleton()->environment_create();
|
||||||
|
|
||||||
bg_mode = BG_CLEAR_COLOR;
|
bg_mode = BG_CLEAR_COLOR;
|
||||||
bg_sky_scale = 1.0;
|
bg_sky_custom_fov = 0;
|
||||||
bg_energy = 1.0;
|
bg_energy = 1.0;
|
||||||
bg_canvas_max_layer = 0;
|
bg_canvas_max_layer = 0;
|
||||||
ambient_energy = 1.0;
|
ambient_energy = 1.0;
|
||||||
|
|
|
@ -76,7 +76,7 @@ private:
|
||||||
|
|
||||||
BGMode bg_mode;
|
BGMode bg_mode;
|
||||||
Ref<Sky> bg_sky;
|
Ref<Sky> bg_sky;
|
||||||
float bg_sky_scale;
|
float bg_sky_custom_fov;
|
||||||
Color bg_color;
|
Color bg_color;
|
||||||
float bg_energy;
|
float bg_energy;
|
||||||
int bg_canvas_max_layer;
|
int bg_canvas_max_layer;
|
||||||
|
@ -162,7 +162,7 @@ protected:
|
||||||
public:
|
public:
|
||||||
void set_background(BGMode p_bg);
|
void set_background(BGMode p_bg);
|
||||||
void set_sky(const Ref<Sky> &p_sky);
|
void set_sky(const Ref<Sky> &p_sky);
|
||||||
void set_sky_scale(float p_scale);
|
void set_sky_custom_fov(float p_scale);
|
||||||
void set_bg_color(const Color &p_color);
|
void set_bg_color(const Color &p_color);
|
||||||
void set_bg_energy(float p_energy);
|
void set_bg_energy(float p_energy);
|
||||||
void set_canvas_max_layer(int p_max_layer);
|
void set_canvas_max_layer(int p_max_layer);
|
||||||
|
@ -172,7 +172,7 @@ public:
|
||||||
|
|
||||||
BGMode get_background() const;
|
BGMode get_background() const;
|
||||||
Ref<Sky> get_sky() const;
|
Ref<Sky> get_sky() const;
|
||||||
float get_sky_scale() const;
|
float get_sky_custom_fov() const;
|
||||||
Color get_bg_color() const;
|
Color get_bg_color() const;
|
||||||
float get_bg_energy() const;
|
float get_bg_energy() const;
|
||||||
int get_canvas_max_layer() const;
|
int get_canvas_max_layer() const;
|
||||||
|
|
|
@ -53,7 +53,7 @@ public:
|
||||||
|
|
||||||
virtual void environment_set_background(RID p_env, VS::EnvironmentBG p_bg) = 0;
|
virtual void environment_set_background(RID p_env, VS::EnvironmentBG p_bg) = 0;
|
||||||
virtual void environment_set_sky(RID p_env, RID p_sky) = 0;
|
virtual void environment_set_sky(RID p_env, RID p_sky) = 0;
|
||||||
virtual void environment_set_sky_scale(RID p_env, float p_scale) = 0;
|
virtual void environment_set_sky_custom_fov(RID p_env, float p_scale) = 0;
|
||||||
virtual void environment_set_bg_color(RID p_env, const Color &p_color) = 0;
|
virtual void environment_set_bg_color(RID p_env, const Color &p_color) = 0;
|
||||||
virtual void environment_set_bg_energy(RID p_env, float p_energy) = 0;
|
virtual void environment_set_bg_energy(RID p_env, float p_energy) = 0;
|
||||||
virtual void environment_set_canvas_max_layer(RID p_env, int p_max_layer) = 0;
|
virtual void environment_set_canvas_max_layer(RID p_env, int p_max_layer) = 0;
|
||||||
|
|
|
@ -50,12 +50,6 @@ ShaderTypes::ShaderTypes() {
|
||||||
|
|
||||||
/*************** SPATIAL ***********************/
|
/*************** SPATIAL ***********************/
|
||||||
|
|
||||||
shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["SRC_VERTEX"] = ShaderLanguage::TYPE_VEC3;
|
|
||||||
shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["SRC_NORMAL"] = ShaderLanguage::TYPE_VEC3;
|
|
||||||
shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["SRC_BONES"] = ShaderLanguage::TYPE_IVEC4;
|
|
||||||
shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["SRC_WEIGHTS"] = ShaderLanguage::TYPE_VEC4;
|
|
||||||
|
|
||||||
shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["POSITION"] = ShaderLanguage::TYPE_VEC4;
|
|
||||||
shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["VERTEX"] = ShaderLanguage::TYPE_VEC3;
|
shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["VERTEX"] = ShaderLanguage::TYPE_VEC3;
|
||||||
shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["NORMAL"] = ShaderLanguage::TYPE_VEC3;
|
shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["NORMAL"] = ShaderLanguage::TYPE_VEC3;
|
||||||
shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["TANGENT"] = ShaderLanguage::TYPE_VEC3;
|
shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["TANGENT"] = ShaderLanguage::TYPE_VEC3;
|
||||||
|
@ -90,7 +84,6 @@ ShaderTypes::ShaderTypes() {
|
||||||
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["UV"] = ShaderLanguage::TYPE_VEC2;
|
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["UV"] = ShaderLanguage::TYPE_VEC2;
|
||||||
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["UV2"] = ShaderLanguage::TYPE_VEC2;
|
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["UV2"] = ShaderLanguage::TYPE_VEC2;
|
||||||
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["COLOR"] = ShaderLanguage::TYPE_VEC4;
|
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["COLOR"] = ShaderLanguage::TYPE_VEC4;
|
||||||
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["NORMAL"] = ShaderLanguage::TYPE_VEC3;
|
|
||||||
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["ALBEDO"] = ShaderLanguage::TYPE_VEC3;
|
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["ALBEDO"] = ShaderLanguage::TYPE_VEC3;
|
||||||
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["ALPHA"] = ShaderLanguage::TYPE_FLOAT;
|
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["ALPHA"] = ShaderLanguage::TYPE_FLOAT;
|
||||||
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["METALLIC"] = ShaderLanguage::TYPE_FLOAT;
|
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["METALLIC"] = ShaderLanguage::TYPE_FLOAT;
|
||||||
|
@ -179,21 +172,19 @@ ShaderTypes::ShaderTypes() {
|
||||||
|
|
||||||
/************ CANVAS ITEM **************************/
|
/************ CANVAS ITEM **************************/
|
||||||
|
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["SRC_VERTEX"] = ShaderLanguage::TYPE_VEC2;
|
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["VERTEX"] = ShaderLanguage::TYPE_VEC2;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["VERTEX"] = ShaderLanguage::TYPE_VEC2;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["UV"] = ShaderLanguage::TYPE_VEC2;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["UV"] = ShaderLanguage::TYPE_VEC2;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["VERTEX_COLOR"] = ShaderLanguage::TYPE_VEC4;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["COLOR"] = ShaderLanguage::TYPE_VEC4;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["POINT_SIZE"] = ShaderLanguage::TYPE_FLOAT;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["POINT_SIZE"] = ShaderLanguage::TYPE_FLOAT;
|
||||||
|
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["WORLD_MATRIX"] = ShaderLanguage::TYPE_MAT4;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["WORLD_MATRIX"] = ShaderLanguage::TYPE_MAT4;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["PROJECTION_MATRIX"] = ShaderLanguage::TYPE_MAT4;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["PROJECTION_MATRIX"] = ShaderLanguage::TYPE_MAT4;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["EXTRA_MATRIX"] = ShaderLanguage::TYPE_MAT4;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["EXTRA_MATRIX"] = ShaderLanguage::TYPE_MAT4;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["TIME"] = ShaderLanguage::TYPE_FLOAT;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["TIME"] = ShaderLanguage::TYPE_FLOAT;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["PARTICLE_CUSTOM"] = ShaderLanguage::TYPE_VEC4;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["INSTANCE_CUSTOM"] = ShaderLanguage::TYPE_VEC4;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["AT_LIGHT_PASS"] = ShaderLanguage::TYPE_BOOL;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["AT_LIGHT_PASS"] = ShaderLanguage::TYPE_BOOL;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].can_discard = false;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].can_discard = false;
|
||||||
|
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["SRC_COLOR"] = ShaderLanguage::TYPE_VEC4;
|
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["FRAGCOORD"] = ShaderLanguage::TYPE_VEC4;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["FRAGCOORD"] = ShaderLanguage::TYPE_VEC4;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["NORMAL"] = ShaderLanguage::TYPE_VEC3;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["NORMAL"] = ShaderLanguage::TYPE_VEC3;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["NORMALMAP"] = ShaderLanguage::TYPE_VEC3;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["NORMALMAP"] = ShaderLanguage::TYPE_VEC3;
|
||||||
|
@ -202,13 +193,13 @@ ShaderTypes::ShaderTypes() {
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["COLOR"] = ShaderLanguage::TYPE_VEC4;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["COLOR"] = ShaderLanguage::TYPE_VEC4;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["TEXTURE_PIXEL_SIZE"] = ShaderLanguage::TYPE_VEC2;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["TEXTURE_PIXEL_SIZE"] = ShaderLanguage::TYPE_VEC2;
|
||||||
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["NORMAL_TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["SCREEN_UV"] = ShaderLanguage::TYPE_VEC2;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["SCREEN_UV"] = ShaderLanguage::TYPE_VEC2;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["SCREEN_PIXEL_SIZE"] = ShaderLanguage::TYPE_VEC2;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["SCREEN_PIXEL_SIZE"] = ShaderLanguage::TYPE_VEC2;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["POINT_COORD"] = ShaderLanguage::TYPE_VEC2;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["POINT_COORD"] = ShaderLanguage::TYPE_VEC2;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["TIME"] = ShaderLanguage::TYPE_FLOAT;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["TIME"] = ShaderLanguage::TYPE_FLOAT;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["AT_LIGHT_PASS"] = ShaderLanguage::TYPE_BOOL;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["AT_LIGHT_PASS"] = ShaderLanguage::TYPE_BOOL;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["SCREEN_TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["SCREEN_TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D;
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["SCREEN_UV"] = ShaderLanguage::TYPE_VEC2;
|
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].can_discard = true;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].can_discard = true;
|
||||||
|
|
||||||
shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["POSITION"] = ShaderLanguage::TYPE_VEC2;
|
shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["POSITION"] = ShaderLanguage::TYPE_VEC2;
|
||||||
|
|
|
@ -968,7 +968,7 @@ public:
|
||||||
|
|
||||||
BIND2(environment_set_background, RID, EnvironmentBG)
|
BIND2(environment_set_background, RID, EnvironmentBG)
|
||||||
BIND2(environment_set_sky, RID, RID)
|
BIND2(environment_set_sky, RID, RID)
|
||||||
BIND2(environment_set_sky_scale, RID, float)
|
BIND2(environment_set_sky_custom_fov, RID, float)
|
||||||
BIND2(environment_set_bg_color, RID, const Color &)
|
BIND2(environment_set_bg_color, RID, const Color &)
|
||||||
BIND2(environment_set_bg_energy, RID, float)
|
BIND2(environment_set_bg_energy, RID, float)
|
||||||
BIND2(environment_set_canvas_max_layer, RID, int)
|
BIND2(environment_set_canvas_max_layer, RID, int)
|
||||||
|
|
|
@ -381,7 +381,7 @@ public:
|
||||||
|
|
||||||
FUNC2(environment_set_background, RID, EnvironmentBG)
|
FUNC2(environment_set_background, RID, EnvironmentBG)
|
||||||
FUNC2(environment_set_sky, RID, RID)
|
FUNC2(environment_set_sky, RID, RID)
|
||||||
FUNC2(environment_set_sky_scale, RID, float)
|
FUNC2(environment_set_sky_custom_fov, RID, float)
|
||||||
FUNC2(environment_set_bg_color, RID, const Color &)
|
FUNC2(environment_set_bg_color, RID, const Color &)
|
||||||
FUNC2(environment_set_bg_energy, RID, float)
|
FUNC2(environment_set_bg_energy, RID, float)
|
||||||
FUNC2(environment_set_canvas_max_layer, RID, int)
|
FUNC2(environment_set_canvas_max_layer, RID, int)
|
||||||
|
|
|
@ -637,7 +637,7 @@ public:
|
||||||
|
|
||||||
virtual void environment_set_background(RID p_env, EnvironmentBG p_bg) = 0;
|
virtual void environment_set_background(RID p_env, EnvironmentBG p_bg) = 0;
|
||||||
virtual void environment_set_sky(RID p_env, RID p_sky) = 0;
|
virtual void environment_set_sky(RID p_env, RID p_sky) = 0;
|
||||||
virtual void environment_set_sky_scale(RID p_env, float p_scale) = 0;
|
virtual void environment_set_sky_custom_fov(RID p_env, float p_scale) = 0;
|
||||||
virtual void environment_set_bg_color(RID p_env, const Color &p_color) = 0;
|
virtual void environment_set_bg_color(RID p_env, const Color &p_color) = 0;
|
||||||
virtual void environment_set_bg_energy(RID p_env, float p_energy) = 0;
|
virtual void environment_set_bg_energy(RID p_env, float p_energy) = 0;
|
||||||
virtual void environment_set_canvas_max_layer(RID p_env, int p_max_layer) = 0;
|
virtual void environment_set_canvas_max_layer(RID p_env, int p_max_layer) = 0;
|
||||||
|
|
Loading…
Reference in New Issue