diff options
author | Juan Linietsky <reduzio@gmail.com> | 2017-10-30 19:32:21 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-30 19:32:21 -0300 |
commit | 4785e66eeab237d9390471d1ca2631e2f187d89b (patch) | |
tree | fe6fdef2de8d050a4f5bf1f5dc606339da460581 /drivers/gles3 | |
parent | 5bbc9a7e663c7119a0089cdc853d4b97b2ce6280 (diff) | |
parent | a0fc641f2516015f1be863d9f9632654bb25a684 (diff) |
Merge pull request #12288 from tagcup/expose_viewport_size
Expose VIEWPORT_SIZE in shader language.
Diffstat (limited to 'drivers/gles3')
-rw-r--r-- | drivers/gles3/rasterizer_scene_gles3.cpp | 6 | ||||
-rw-r--r-- | drivers/gles3/rasterizer_scene_gles3.h | 3 | ||||
-rw-r--r-- | drivers/gles3/shader_compiler_gles3.cpp | 2 | ||||
-rw-r--r-- | drivers/gles3/shaders/scene.glsl | 2 |
4 files changed, 9 insertions, 4 deletions
diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index ddcb04fa7d..8ec988bec1 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -1134,9 +1134,9 @@ bool RasterizerSceneGLES3::_setup_material(RasterizerStorageGLES3::Material *p_m state.current_depth_draw = p_material->shader->spatial.depth_draw_mode; } -//glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); + //glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); -/* + /* if (p_material->flags[VS::MATERIAL_FLAG_WIREFRAME]) glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); else @@ -4023,6 +4023,8 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const state.ubo_data.shadow_dual_paraboloid_render_side = 0; state.ubo_data.shadow_dual_paraboloid_render_zfar = 0; + p_cam_projection.get_viewport_size(state.ubo_data.viewport_size[0], state.ubo_data.viewport_size[1]); + if (storage->frame.current_rt) { state.ubo_data.screen_pixel_size[0] = 1.0 / storage->frame.current_rt->width; state.ubo_data.screen_pixel_size[1] = 1.0 / storage->frame.current_rt->height; diff --git a/drivers/gles3/rasterizer_scene_gles3.h b/drivers/gles3/rasterizer_scene_gles3.h index ff691ddcec..69b43c7813 100644 --- a/drivers/gles3/rasterizer_scene_gles3.h +++ b/drivers/gles3/rasterizer_scene_gles3.h @@ -124,6 +124,7 @@ public: float z_slope_scale; float shadow_dual_paraboloid_render_zfar; float shadow_dual_paraboloid_render_side; + float viewport_size[2]; float screen_pixel_size[2]; float shadow_atlas_pixel_size[2]; float shadow_directional_pixel_size[2]; @@ -143,7 +144,7 @@ public: float fog_height_min; float fog_height_max; float fog_height_curve; - uint8_t padding[8]; + // make sure this struct is padded to be a multiple of 16 bytes for webgl } ubo_data; diff --git a/drivers/gles3/shader_compiler_gles3.cpp b/drivers/gles3/shader_compiler_gles3.cpp index f39342b680..ad08c59de8 100644 --- a/drivers/gles3/shader_compiler_gles3.cpp +++ b/drivers/gles3/shader_compiler_gles3.cpp @@ -766,7 +766,7 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() { //builtins actions[VS::SHADER_SPATIAL].renames["TIME"] = "time"; - //actions[VS::SHADER_SPATIAL].renames["VIEWPORT_SIZE"]=ShaderLanguage::TYPE_VEC2; + actions[VS::SHADER_SPATIAL].renames["VIEWPORT_SIZE"] = "viewport_size"; actions[VS::SHADER_SPATIAL].renames["FRAGCOORD"] = "gl_FragCoord"; actions[VS::SHADER_SPATIAL].renames["FRONT_FACING"] = "gl_FrontFacing"; diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl index e4d76753cb..41966fd565 100644 --- a/drivers/gles3/shaders/scene.glsl +++ b/drivers/gles3/shaders/scene.glsl @@ -80,6 +80,7 @@ layout(std140) uniform SceneData { //ubo:0 highp float shadow_dual_paraboloid_render_zfar; highp float shadow_dual_paraboloid_render_side; + highp vec2 viewport_size; highp vec2 screen_pixel_size; highp vec2 shadow_atlas_pixel_size; highp vec2 directional_shadow_pixel_size; @@ -566,6 +567,7 @@ in vec3 normal_interp; uniform bool no_ambient_light; + #ifdef USE_RADIANCE_MAP |