瀏覽代碼

properly pass SCREEN_PIEXEL_SIZE to canvas light shader

(cherry picked from commit 518f0fb1900b29c761c939559195ae10de610ec8)
clayjohn 6 年之前
父節點
當前提交
4492f6d193
共有 1 個文件被更改,包括 5 次插入0 次删除
  1. 5 0
      drivers/gles3/rasterizer_canvas_gles3.cpp

+ 5 - 0
drivers/gles3/rasterizer_canvas_gles3.cpp

@@ -1586,6 +1586,11 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons
 						state.canvas_shader.set_uniform(CanvasShaderGLES3::FINAL_MODULATE, state.canvas_item_modulate);
 						state.canvas_shader.set_uniform(CanvasShaderGLES3::MODELVIEW_MATRIX, state.final_transform);
 						state.canvas_shader.set_uniform(CanvasShaderGLES3::EXTRA_MATRIX, Transform2D());
+						if (storage->frame.current_rt) {
+							state.canvas_shader.set_uniform(CanvasShaderGLES3::SCREEN_PIXEL_SIZE, Vector2(1.0 / storage->frame.current_rt->width, 1.0 / storage->frame.current_rt->height));
+						} else {
+							state.canvas_shader.set_uniform(CanvasShaderGLES3::SCREEN_PIXEL_SIZE, Vector2(1.0, 1.0));
+						}
 					}
 
 					glBindBufferBase(GL_UNIFORM_BUFFER, 1, static_cast<LightInternal *>(light->light_internal.get_data())->ubo);