Spracherkennung für: .glsl vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v.
2.
0. If a copy of the MPL was not distributed with this
* file, You can obtain one at
http://mozilla.org/MPL/2.
0/. */
/// This file provides the boilerplate for sampling from sColor0 with strict sample bounds.
#include shared
flat varying mediump vec4 v_uv0_sample_bounds;
varying highp vec2 v_uv0;
#ifdef WR_VERTEX_SHADER
/// sample_pos is in
0..
1 normalized coordinates
/// uv_rect is in pixel.
void vs_init_sample_color0(vec2 sample_pos, RectWithEndpoint uv_rect) {
vec2 uv = mix(uv_rect.p0, uv_rect.p1, sample_pos);
// For sampler2DRect, the uv_rect is already in pixel space and sampling
// expects pixel-space coordinates, so skip the normalization.
#ifdef WR_FEATURE_TEXTURE_RECT
vec2 texture_size = vec2(
1.
0);
#else
vec2 texture_size = vec2(TEX_SIZE(sColor0));
#endif
v_uv0 = uv / texture_size;
// The uv rect may be flipped (for example Y-flipped external images), in which case
// p0 > p1. Normalize with min/max so the sample bounds stay valid.
vec2 min_uv = min(uv_rect.p0, uv_rect.p1);
vec2 max_uv = max(uv_rect.p0, uv_rect.p1);
v_uv0_sample_bounds = vec4(
min_uv + vec2(
0.
5),
max_uv - vec2(
0.
5)
) / texture_size.xyxy;
}
#endif
#ifdef WR_FRAGMENT_SHADER
/// The vertex shader must have called vs_init_sample_color0
vec4 fs_sample_color0() {
vec2 uv = clamp(v_uv0, v_uv0_sample_bounds.xy, v_uv0_sample_bounds.zw);
vec4 texel = TEX_SAMPLE(sColor0, uv);
return texel;
}
#endif