diff --git a/engine/src/flutter/ci/licenses_golden/licenses_flutter b/engine/src/flutter/ci/licenses_golden/licenses_flutter index ee2724eaec..dd6eac3c39 100644 --- a/engine/src/flutter/ci/licenses_golden/licenses_flutter +++ b/engine/src/flutter/ci/licenses_golden/licenses_flutter @@ -1107,6 +1107,7 @@ FILE: ../../../flutter/impeller/compiler/reflector.cc FILE: ../../../flutter/impeller/compiler/reflector.h FILE: ../../../flutter/impeller/compiler/runtime_stage_data.cc FILE: ../../../flutter/impeller/compiler/runtime_stage_data.h +FILE: ../../../flutter/impeller/compiler/shader_lib/flutter/runtime_effect.glsl FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/blending.glsl FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/branching.glsl FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/color.glsl diff --git a/engine/src/flutter/impeller/compiler/shader_lib/flutter/runtime_effect.glsl b/engine/src/flutter/impeller/compiler/shader_lib/flutter/runtime_effect.glsl new file mode 100644 index 0000000000..3e5740c103 --- /dev/null +++ b/engine/src/flutter/impeller/compiler/shader_lib/flutter/runtime_effect.glsl @@ -0,0 +1,25 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef RUNTIME_EFFECT_GLSL_ +#define RUNTIME_EFFECT_GLSL_ + +#if defined(IMPELLER_GRAPHICS_BACKEND) + +in vec2 _fragCoord; +vec2 FlutterFragCoord() { + return _fragCoord; +} + +#elif defined(SKIA_GRAPHICS_BACKEND) + +vec2 FlutterFragCoord() { + return gl_FragCoord.xy; +} + +#else +#error "Runtime effect builtins are not supported for this graphics backend." +#endif + +#endif diff --git a/engine/src/flutter/impeller/fixtures/ink_sparkle.frag b/engine/src/flutter/impeller/fixtures/ink_sparkle.frag index 1b3a43ca45..b8dea9bf00 100644 --- a/engine/src/flutter/impeller/fixtures/ink_sparkle.frag +++ b/engine/src/flutter/impeller/fixtures/ink_sparkle.frag @@ -6,6 +6,8 @@ precision highp float; +#include + layout(location = 0) uniform vec4 u_color; layout(location = 1) uniform float u_alpha; layout(location = 2) uniform vec4 u_sparkle_color; @@ -86,7 +88,7 @@ float turbulence(vec2 uv) { } void main() { - vec2 p = gl_FragCoord.xy; + vec2 p = FlutterFragCoord(); vec2 uv = p * u_resolution_scale; vec2 density_uv = uv - mod(p, u_noise_scale); float radius = u_max_radius * u_radius_scale; diff --git a/engine/src/flutter/impeller/fixtures/simple.vert b/engine/src/flutter/impeller/fixtures/simple.vert index e0cb437917..122bf06305 100644 --- a/engine/src/flutter/impeller/fixtures/simple.vert +++ b/engine/src/flutter/impeller/fixtures/simple.vert @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +out vec2 v_position; + void main() { gl_Position = vec4(1.0); + v_position = vec2(1.0); } diff --git a/engine/src/flutter/lib/ui/fixtures/shaders/general_shaders/uniforms_sorted.frag b/engine/src/flutter/lib/ui/fixtures/shaders/general_shaders/uniforms_sorted.frag index 3c97433f00..827fc18ce3 100644 --- a/engine/src/flutter/lib/ui/fixtures/shaders/general_shaders/uniforms_sorted.frag +++ b/engine/src/flutter/lib/ui/fixtures/shaders/general_shaders/uniforms_sorted.frag @@ -11,6 +11,8 @@ precision highp float; +#include + layout(location = 0) uniform vec4 u_color; layout(location = 1) uniform float u_alpha; layout(location = 2) uniform vec4 u_sparkle_color; @@ -93,7 +95,7 @@ float turbulence(vec2 uv) { void main() { // This block of code triggers the compiler to emit the uniforms out of order // if they are not explicitly sorted. - vec2 p = gl_FragCoord.xy; + vec2 p = FlutterFragCoord(); vec2 uv = p * u_resolution_scale; vec2 density_uv = uv - mod(p, u_noise_scale); float radius = u_max_radius * u_radius_scale;