return {["parameter_overrides"]={{["name"]="PT_PALETTE",["value"]=1,},{["name"]="PT_POLARIZER",["value"]=0,},{["name"]="PT_HIGHLIGHTS",["value"]=0,},},["pass_count"]=1,["passes"]={{["filter"]="nearest",["float_framebuffer"]=false,["fragment"]="#version 100\ precision highp float;\ precision highp int;\ \ const vec2 _356[5] = vec2[](vec2(0.0), vec2(-1.0, 0.0), vec2(1.0, 0.0), vec2(0.0, -1.0), vec2(0.0, 1.0));\ const vec2 _414[9] = vec2[](vec2(0.0), vec2(-1.0, 0.0), vec2(1.0, 0.0), vec2(0.0, -1.0), vec2(0.0, 1.0), vec2(-1.0), vec2(1.0, -1.0), vec2(-1.0, 1.0), vec2(1.0));\ \ struct LIBRA_UBO_FRAGMENT\ {\ mat4 MVP;\ vec3 Gyroscope;\ vec3 Accelerometer;\ vec3 AccelerometerRest;\ float PT_HIDE_CONTENT;\ float PT_PALETTE;\ float PT_PALETTE_INTENSITY;\ float PT_BACKING_BRIGHTNESS;\ float PT_POLARIZER;\ float PT_POLARIZER_TINT;\ float PT_SATURATION;\ float PT_HIGHLIGHTS;\ float PT_WHITE_BOOST;\ float PT_WHITE_TRANSPARENCY;\ float PT_BRIGHTNESS_GRID;\ };\ \ uniform LIBRA_UBO_FRAGMENT LIBRA_UBO_FRAGMENT_INSTANCE;\ \ struct LIBRA_PUSH_FRAGMENT\ {\ vec4 SourceSize;\ vec4 OutputSize;\ float PT_ACCEL_ENABLE;\ float PT_ACCEL_SENSITIVITY;\ float PT_SHADOW_MOTION;\ float PT_SHADOW_MAX_OFFSET;\ float PT_SHADOW_MOTION_X;\ float PT_SHADOW_MOTION_Y;\ float PT_SHADOW_OFFSET_X;\ float PT_SHADOW_OFFSET_Y;\ float PT_ENABLE;\ float PT_BRIGHTNESS_MODE;\ float PT_SHADOW_ENABLE;\ float PT_SHADOW_BLUR;\ float PT_SHADOW_OPACITY;\ float PT_THRESHOLD;\ float PT_SHADOW_FAST_BLUR;\ float PT_PIXEL_MODE;\ float PT_BASE_ALPHA;\ };\ \ uniform LIBRA_PUSH_FRAGMENT LIBRA_PUSH_FRAGMENT_INSTANCE;\ \ uniform highp sampler2D LIBRA_TEXTURE_Source;\ uniform highp sampler2D LIBRA_TEXTURE_Original;\ \ varying vec2 LIBRA_VARYING_0;\ varying vec2 LIBRA_VARYING_3;\ varying float LIBRA_VARYING_2;\ varying vec2 LIBRA_VARYING_1;\ \ float getPerceptualBrightness(vec3 color)\ {\ return ((0.2125999927520751953125 * color.x) + (0.715200006961822509765625 * color.y)) + (0.072200000286102294921875 * color.z);\ }\ \ bool isWhitePixel(vec3 color, float threshold)\ {\ vec3 param = color;\ float brightness = getPerceptualBrightness(param);\ float min_channel = min(min(color.x, color.y), color.z);\ bool _111 = brightness > threshold;\ bool _119;\ if (_111)\ {\ _119 = min_channel > (threshold * 0.89999997615814208984375);\ }\ else\ {\ _119 = _111;\ }\ return _119;\ }\ \ float hash(vec2 p)\ {\ vec3 p3 = fract(p.xyx * 0.103100001811981201171875);\ p3 += vec3(dot(p3, p3.yzx + vec3(33.3300018310546875)));\ return fract((p3.x + p3.y) * p3.z);\ }\ \ float paperNoise(vec2 uv, float scale)\ {\ vec2 p = (uv * scale) * 512.0;\ float n = 0.0;\ float amplitude = 0.5;\ float frequency = 1.0;\ for (int i = 0; i < 3; i++)\ {\ vec2 param = p * frequency;\ n += (hash(param) * amplitude);\ amplitude *= 0.5;\ frequency *= 2.0;\ }\ return n;\ }\ \ vec3 generateProceduralBackground(vec2 uv)\ {\ vec3 baseColor = vec3(LIBRA_UBO_FRAGMENT_INSTANCE.PT_BACKING_BRIGHTNESS);\ vec2 param = uv;\ float param_1 = 0.25;\ float grain = paperNoise(param, param_1);\ float grainOffset = (grain - 0.4375) * 0.064999997615814208984375;\ return baseColor + vec3(grainOffset);\ }\ \ float getGameBoyRGBSum(vec3 color)\ {\ return ((color.x + color.y) + color.z) / 3.0;\ }\ \ float getBrightness(vec3 color)\ {\ if (LIBRA_PUSH_FRAGMENT_INSTANCE.PT_BRIGHTNESS_MODE < 0.5)\ {\ vec3 param = color;\ return getGameBoyRGBSum(param);\ }\ else\ {\ vec3 param_1 = color;\ return getPerceptualBrightness(param_1);\ }\ }\ \ void main()\ {\ vec4 lcd_color = texture2D(LIBRA_TEXTURE_Source, LIBRA_VARYING_0);\ vec4 output_color = lcd_color;\ if (LIBRA_PUSH_FRAGMENT_INSTANCE.PT_ENABLE < 0.5)\ {\ gl_FragData[0] = output_color;\ return;\ }\ vec3 original_pixel = texture2D(LIBRA_TEXTURE_Original, LIBRA_VARYING_0).xyz;\ if (LIBRA_UBO_FRAGMENT_INSTANCE.PT_HIDE_CONTENT > 0.5)\ {\ lcd_color = vec4(1.0);\ original_pixel = vec3(1.0);\ output_color = lcd_color;\ }\ if (LIBRA_UBO_FRAGMENT_INSTANCE.PT_HIGHLIGHTS < (-0.001000000047497451305389404296875))\ {\ vec3 param = lcd_color.xyz;\ float luma = getPerceptualBrightness(param);\ vec4 _274 = lcd_color;\ vec3 _276 = _274.xyz * max(1.0 + (LIBRA_UBO_FRAGMENT_INSTANCE.PT_HIGHLIGHTS * luma), 0.0);\ lcd_color.x = _276.x;\ lcd_color.y = _276.y;\ lcd_color.z = _276.z;\ }\ vec3 param_1 = original_pixel;\ float param_2 = LIBRA_PUSH_FRAGMENT_INSTANCE.PT_THRESHOLD;\ bool current_is_white = isWhitePixel(param_1, param_2);\ vec2 param_3 = LIBRA_VARYING_0;\ vec4 background = vec4(generateProceduralBackground(param_3), 1.0);\ bool _303 = LIBRA_PUSH_FRAGMENT_INSTANCE.PT_SHADOW_ENABLE > 0.5;\ bool _310;\ if (_303)\ {\ _310 = LIBRA_UBO_FRAGMENT_INSTANCE.PT_HIDE_CONTENT < 1.5;\ }\ else\ {\ _310 = _303;\ }\ if (_310)\ {\ vec2 shadow_offset = ((-LIBRA_VARYING_3) * LIBRA_VARYING_2) * LIBRA_VARYING_1;\ float shadow_strength = 0.0;\ if (LIBRA_PUSH_FRAGMENT_INSTANCE.PT_SHADOW_BLUR > 0.100000001490116119384765625)\ {\ vec2 blur_dist = LIBRA_VARYING_1 * (LIBRA_PUSH_FRAGMENT_INSTANCE.PT_SHADOW_BLUR * LIBRA_VARYING_2);\ float blurred_shadow = 0.0;\ if (LIBRA_PUSH_FRAGMENT_INSTANCE.PT_SHADOW_FAST_BLUR < 0.5)\ {\ for (int i = 0; i < 5; i++)\ {\ vec2 sample_pos = (LIBRA_VARYING_0 + shadow_offset) + (_356[i] * blur_dist);\ vec3 blur_sample = texture2D(LIBRA_TEXTURE_Original, sample_pos).xyz;\ float w = (i == 0) ? 4.0 : 2.0;\ vec3 param_4 = blur_sample;\ float blur_brightness = getBrightness(param_4);\ blurred_shadow += ((1.0 - blur_brightness) * w);\ }\ shadow_strength = (blurred_shadow / 12.0) * LIBRA_PUSH_FRAGMENT_INSTANCE.PT_SHADOW_OPACITY;\ }\ else\ {\ float _442;\ for (int i_1 = 0; i_1 < 9; i_1++)\ {\ vec2 sample_pos_1 = (LIBRA_VARYING_0 + shadow_offset) + (_414[i_1] * blur_dist);\ vec3 blur_sample_1 = texture2D(LIBRA_TEXTURE_Original, sample_pos_1).xyz;\ if (i_1 == 0)\ {\ _442 = 4.0;\ }\ else\ {\ _442 = (i_1 < 5) ? 2.0 : 1.0;\ }\ float w_1 = _442;\ vec3 param_5 = blur_sample_1;\ float blur_brightness_1 = getBrightness(param_5);\ blurred_shadow += ((1.0 - blur_brightness_1) * w_1);\ }\ shadow_strength = (blurred_shadow / 16.0) * LIBRA_PUSH_FRAGMENT_INSTANCE.PT_SHADOW_OPACITY;\ }\ }\ else\ {\ vec3 center_source = texture2D(LIBRA_TEXTURE_Original, LIBRA_VARYING_0 + shadow_offset).xyz;\ vec3 param_6 = center_source;\ float shadow_source_brightness = getBrightness(param_6);\ shadow_strength = (1.0 - shadow_source_brightness) * LIBRA_PUSH_FRAGMENT_INSTANCE.PT_SHADOW_OPACITY;\ }\ float deadzone = (1.0 - LIBRA_PUSH_FRAGMENT_INSTANCE.PT_THRESHOLD) * LIBRA_PUSH_FRAGMENT_INSTANCE.PT_SHADOW_OPACITY;\ if (deadzone > 0.001000000047497451305389404296875)\ {\ shadow_strength = smoothstep(0.0, deadzone, shadow_strength) * shadow_strength;\ }\ vec4 _502 = background;\ vec4 _504 = background;\ vec3 _510 = mix(_502.xyz, _504.xyz * 0.20000000298023223876953125, vec3(shadow_strength));\ background.x = _510.x;\ background.y = _510.y;\ background.z = _510.z;\ }\ if (LIBRA_UBO_FRAGMENT_INSTANCE.PT_PALETTE > 0.5)\ {\ vec3 bg_palette_color;\ if (LIBRA_UBO_FRAGMENT_INSTANCE.PT_PALETTE < 1.5)\ {\ bg_palette_color = vec3(0.65100002288818359375, 0.675000011920928955078125, 0.51800000667572021484375);\ }\ else\ {\ if (LIBRA_UBO_FRAGMENT_INSTANCE.PT_PALETTE < 2.5)\ {\ bg_palette_color = vec3(0.7200000286102294921875, 0.730000019073486328125, 0.660000026226043701171875);\ }\ else\ {\ if (LIBRA_UBO_FRAGMENT_INSTANCE.PT_PALETTE < 3.5)\ {\ bg_palette_color = vec3(0.765999972820281982421875, 0.730000019073486328125, 0.763000011444091796875);\ }\ else\ {\ bg_palette_color = vec3(0.7599999904632568359375);\ }\ }\ }\ float max_ch = max(bg_palette_color.x, max(bg_palette_color.y, bg_palette_color.z));\ bg_palette_color *= (0.675000011920928955078125 / max_ch);\ vec3 tinted_background = clamp(vec3(bg_palette_color.x + mix(-1.0, 1.0, background.x), bg_palette_color.y + mix(-1.0, 1.0, background.y), bg_palette_color.z + mix(-1.0, 1.0, background.z)), vec3(0.0), vec3(1.0));\ vec4 _592 = background;\ vec3 _599 = mix(_592.xyz, tinted_background, vec3(LIBRA_UBO_FRAGMENT_INSTANCE.PT_PALETTE_INTENSITY));\ background.x = _599.x;\ background.y = _599.y;\ background.z = _599.z;\ }\ vec3 brightness_source = original_pixel;\ if (LIBRA_UBO_FRAGMENT_INSTANCE.PT_BRIGHTNESS_GRID > 0.001000000047497451305389404296875)\ {\ brightness_source = lcd_color.xyz;\ if (current_is_white)\ {\ float white_blend = smoothstep(0.0500000007450580596923828125, 1.0, LIBRA_UBO_FRAGMENT_INSTANCE.PT_BRIGHTNESS_GRID);\ brightness_source = mix(original_pixel, lcd_color.xyz, vec3(white_blend));\ }\ }\ bool _632 = LIBRA_PUSH_FRAGMENT_INSTANCE.PT_PIXEL_MODE > 0.5;\ bool _638;\ if (_632)\ {\ _638 = LIBRA_PUSH_FRAGMENT_INSTANCE.PT_PIXEL_MODE < 1.5;\ }\ else\ {\ _638 = _632;\ }\ if (_638)\ {\ vec3 param_7 = brightness_source;\ float pixel_intensity = getBrightness(param_7);\ float transparency = (LIBRA_PUSH_FRAGMENT_INSTANCE.PT_BASE_ALPHA * pixel_intensity) * 2.66499996185302734375;\ bool _659;\ if (current_is_white)\ {\ _659 = LIBRA_UBO_FRAGMENT_INSTANCE.PT_WHITE_BOOST > 0.5;\ }\ else\ {\ _659 = current_is_white;\ }\ if (_659)\ {\ transparency = max(transparency, LIBRA_UBO_FRAGMENT_INSTANCE.PT_WHITE_TRANSPARENCY);\ }\ transparency = clamp(transparency, 0.0, 1.0);\ vec3 _674 = mix(lcd_color.xyz, background.xyz, vec3(transparency));\ output_color.x = _674.x;\ output_color.y = _674.y;\ output_color.z = _674.z;\ }\ else\ {\ bool should_apply = (LIBRA_PUSH_FRAGMENT_INSTANCE.PT_PIXEL_MODE < 0.5) ? current_is_white : true;\ if (should_apply)\ {\ vec3 param_8 = brightness_source;\ float pixel_intensity_1 = getBrightness(param_8);\ float pixel_alpha = (pixel_intensity_1 / 3.0) + LIBRA_PUSH_FRAGMENT_INSTANCE.PT_BASE_ALPHA;\ bool _708;\ if (current_is_white)\ {\ _708 = LIBRA_UBO_FRAGMENT_INSTANCE.PT_WHITE_BOOST > 0.5;\ }\ else\ {\ _708 = current_is_white;\ }\ if (_708)\ {\ pixel_alpha = max(pixel_alpha, LIBRA_UBO_FRAGMENT_INSTANCE.PT_WHITE_TRANSPARENCY);\ }\ pixel_alpha = clamp(pixel_alpha, 0.0, 1.0);\ vec3 _723 = mix(lcd_color.xyz, background.xyz, vec3(pixel_alpha));\ output_color.x = _723.x;\ output_color.y = _723.y;\ output_color.z = _723.z;\ }\ }\ bool _733 = LIBRA_UBO_FRAGMENT_INSTANCE.PT_POLARIZER > 0.5;\ bool _739;\ if (_733)\ {\ _739 = LIBRA_UBO_FRAGMENT_INSTANCE.PT_POLARIZER_TINT > 0.001000000047497451305389404296875;\ }\ else\ {\ _739 = _733;\ }\ if (_739)\ {\ vec3 polarizer = mix(vec3(1.0), vec3(0.939999997615814208984375, 1.0, 0.8650000095367431640625), vec3(LIBRA_UBO_FRAGMENT_INSTANCE.PT_POLARIZER_TINT));\ vec4 _751 = output_color;\ vec3 _753 = _751.xyz * polarizer;\ output_color.x = _753.x;\ output_color.y = _753.y;\ output_color.z = _753.z;\ }\ if (LIBRA_UBO_FRAGMENT_INSTANCE.PT_HIGHLIGHTS > 0.001000000047497451305389404296875)\ {\ vec3 param_9 = output_color.xyz;\ float luma_1 = getPerceptualBrightness(param_9);\ vec4 _770 = output_color;\ vec3 _780 = clamp(_770.xyz * (1.0 + (LIBRA_UBO_FRAGMENT_INSTANCE.PT_HIGHLIGHTS * luma_1)), vec3(0.0), vec3(1.0));\ output_color.x = _780.x;\ output_color.y = _780.y;\ output_color.z = _780.z;\ }\ if (abs(LIBRA_UBO_FRAGMENT_INSTANCE.PT_SATURATION - 1.0) > 0.001000000047497451305389404296875)\ {\ vec3 param_10 = output_color.xyz;\ float luma_2 = getPerceptualBrightness(param_10);\ vec4 _801 = output_color;\ vec3 _809 = clamp(mix(vec3(luma_2), _801.xyz, vec3(LIBRA_UBO_FRAGMENT_INSTANCE.PT_SATURATION)), vec3(0.0), vec3(1.0));\ output_color.x = _809.x;\ output_color.y = _809.y;\ output_color.z = _809.z;\ }\ vec2 param_11 = gl_FragCoord.xy;\ vec4 _825 = output_color;\ vec3 _828 = _825.xyz + vec3((hash(param_11) - 0.5) / 255.0);\ output_color.x = _828.x;\ output_color.y = _828.y;\ output_color.z = _828.z;\ gl_FragData[0] = output_color;\ }\ \ ",["frame_count_mod"]=0,["id"]="0",["mipmap_input"]=false,["parameters"]={{["description"]=" * Turn ON Core > Color Correction & Interframe Blending",["id"]="NOTE2",["initial"]=0,["maximum"]=1,["minimum"]=0,["step"]=1,},{["description"]=" * Motion enabled on latest RetroArch nightly build.",["id"]="NOTE3",["initial"]=0,["maximum"]=1,["minimum"]=0,["step"]=1,},{["description"]="== MOTION == (OFF/ON)",["id"]="PT_ACCEL_ENABLE",["initial"]=1,["maximum"]=1,["minimum"]=0,["step"]=1,},{["description"]=" ↳ Tilt sensitivity",["id"]="PT_ACCEL_SENSITIVITY",["initial"]=1,["maximum"]=5,["minimum"]=0.1,["step"]=0.05,},{["description"]=" ↳ Brightness",["id"]="PT_BACKING_BRIGHTNESS",["initial"]=0.48,["maximum"]=0.65,["minimum"]=0.2,["step"]=0.01,},{["description"]=" ↳ Transparency amount",["id"]="PT_BASE_ALPHA",["initial"]=0.2,["maximum"]=1,["minimum"]=0,["step"]=0.01,},{["description"]="--- Gridline intensity (0=Less, 1=More)",["id"]="PT_BRIGHTNESS_GRID",["initial"]=0,["maximum"]=1,["minimum"]=0,["step"]=0.05,},{["description"]="--- Brightness mode (0=Simple, 1=Natural)",["id"]="PT_BRIGHTNESS_MODE",["initial"]=1,["maximum"]=1,["minimum"]=0,["step"]=1,},{["description"]="=== Pixel Transparency v2.2 === (OFF/ON)",["id"]="PT_ENABLE",["initial"]=1,["maximum"]=1,["minimum"]=0,["step"]=1,},{["description"]=" * Append to any LCD shader as last pass. Try with GBC & GBA.",["id"]="PT_HIDE_CONTENT",["initial"]=0,["maximum"]=2,["minimum"]=0,["step"]=1,},{["description"]="--- Pixel brightness (0=OFF, -Dim / +Bright)",["id"]="PT_HIGHLIGHTS",["initial"]=0.05,["maximum"]=1,["minimum"]=-1,["step"]=0.01,},{["description"]="--- Backing tint (0=OFF, 1/2=Warm, 3/4=Neutral)",["id"]="PT_PALETTE",["initial"]=3,["maximum"]=4,["minimum"]=0,["step"]=1,},{["description"]=" ↳ Intensity",["id"]="PT_PALETTE_INTENSITY",["initial"]=1,["maximum"]=2,["minimum"]=0,["step"]=0.05,},{["description"]="--- Transparent pixels (0=White only, 1=Bright, 2=All)",["id"]="PT_PIXEL_MODE",["initial"]=1,["maximum"]=2,["minimum"]=0,["step"]=1,},{["description"]="--- Front polarizer tint (OFF/ON)",["id"]="PT_POLARIZER",["initial"]=1,["maximum"]=1,["minimum"]=0,["step"]=1,},{["description"]=" ↳ Intensity",["id"]="PT_POLARIZER_TINT",["initial"]=1,["maximum"]=1,["minimum"]=0,["step"]=0.05,},{["description"]="--- Color saturation",["id"]="PT_SATURATION",["initial"]=1,["maximum"]=1.5,["minimum"]=0.5,["step"]=0.05,},{["description"]=" ↳ Blur amount",["id"]="PT_SHADOW_BLUR",["initial"]=1,["maximum"]=5,["minimum"]=0,["step"]=0.1,},{["description"]="== SHADOWS == (OFF/ON)",["id"]="PT_SHADOW_ENABLE",["initial"]=1,["maximum"]=1,["minimum"]=0,["step"]=1,},{["description"]=" ↳ Shadow quality (0=Low, 1=High)",["id"]="PT_SHADOW_FAST_BLUR",["initial"]=1,["maximum"]=1,["minimum"]=0,["step"]=1,},{["description"]=" ↳ Max offset",["id"]="PT_SHADOW_MAX_OFFSET",["initial"]=2.5,["maximum"]=30,["minimum"]=0,["step"]=0.5,},{["description"]=" ↳ Shadow motion (OFF/ON) ",["id"]="PT_SHADOW_MOTION",["initial"]=1,["maximum"]=1,["minimum"]=0,["step"]=1,},{["description"]=" ↳ Neutral X",["id"]="PT_SHADOW_MOTION_X",["initial"]=2,["maximum"]=30,["minimum"]=-30,["step"]=0.5,},{["description"]=" ↳ Neutral Y",["id"]="PT_SHADOW_MOTION_Y",["initial"]=2,["maximum"]=30,["minimum"]=-30,["step"]=0.5,},{["description"]=" ↳ X offset",["id"]="PT_SHADOW_OFFSET_X",["initial"]=3,["maximum"]=30,["minimum"]=-30,["step"]=0.5,},{["description"]=" ↳ Y offset",["id"]="PT_SHADOW_OFFSET_Y",["initial"]=3,["maximum"]=30,["minimum"]=-30,["step"]=0.5,},{["description"]=" ↳ Opacity",["id"]="PT_SHADOW_OPACITY",["initial"]=0.5,["maximum"]=1,["minimum"]=0,["step"]=0.01,},{["description"]="--- White pixel detection threshold",["id"]="PT_THRESHOLD",["initial"]=0.9,["maximum"]=1,["minimum"]=0,["step"]=0.01,},{["description"]="--- Boost white pixel transparency (OFF/ON)",["id"]="PT_WHITE_BOOST",["initial"]=0,["maximum"]=1,["minimum"]=0,["step"]=1,},{["description"]=" ↳ Boost amount",["id"]="PT_WHITE_TRANSPARENCY",["initial"]=0.5,["maximum"]=1,["minimum"]=0,["step"]=0.01,},{["description"]="== COLOR ==",["id"]="SECTION1",["initial"]=0,["maximum"]=1,["minimum"]=0,["step"]=1,},{["description"]="== TRANSPARENCY ==",["id"]="SECTION2",["initial"]=0,["maximum"]=1,["minimum"]=0,["step"]=1,},{["description"]="== PERFORMANCE ==",["id"]="SECTION_PERF",["initial"]=0,["maximum"]=1,["minimum"]=0,["step"]=1,},},["samplers"]={{["index"]=0,["name"]="Source",["semantic"]="Source",},{["index"]=0,["name"]="Original",["semantic"]="Original",},},["scale_x"]={["factor"]=1,["factor_kind"]="float",["scale_type"]="viewport",},["scale_y"]={["factor"]=1,["factor_kind"]="float",["scale_type"]="viewport",},["size_uniforms"]={{["index"]=0,["kind"]="texture",["name"]="SourceSize",["semantic"]="Source",},{["index"]=0,["kind"]="unique",["name"]="OutputSize",["semantic"]="Output",},{["index"]=0,["kind"]="unique",["name"]="PT_ACCEL_ENABLE",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_ACCEL_SENSITIVITY",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_SHADOW_MOTION",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_SHADOW_MAX_OFFSET",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_SHADOW_MOTION_X",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_SHADOW_MOTION_Y",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_SHADOW_OFFSET_X",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_SHADOW_OFFSET_Y",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_ENABLE",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_BRIGHTNESS_MODE",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_SHADOW_ENABLE",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_SHADOW_BLUR",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_SHADOW_OPACITY",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_THRESHOLD",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_SHADOW_FAST_BLUR",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_PIXEL_MODE",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_BASE_ALPHA",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="MVP",["semantic"]="MVP",},{["index"]=0,["kind"]="unique",["name"]="Gyroscope",["semantic"]="Gyroscope",},{["index"]=0,["kind"]="unique",["name"]="Accelerometer",["semantic"]="Accelerometer",},{["index"]=0,["kind"]="unique",["name"]="AccelerometerRest",["semantic"]="AccelerometerRest",},{["index"]=0,["kind"]="unique",["name"]="PT_HIDE_CONTENT",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_PALETTE",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_PALETTE_INTENSITY",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_BACKING_BRIGHTNESS",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_POLARIZER",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_POLARIZER_TINT",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_SATURATION",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_HIGHLIGHTS",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_WHITE_BOOST",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_WHITE_TRANSPARENCY",["semantic"]="FloatParameter",},{["index"]=0,["kind"]="unique",["name"]="PT_BRIGHTNESS_GRID",["semantic"]="FloatParameter",},},["srgb_framebuffer"]=false,["vertex"]="#version 100\ \ struct LIBRA_UBO_VERTEX\ {\ mat4 MVP;\ vec3 Gyroscope;\ vec3 Accelerometer;\ vec3 AccelerometerRest;\ float PT_HIDE_CONTENT;\ float PT_PALETTE;\ float PT_PALETTE_INTENSITY;\ float PT_BACKING_BRIGHTNESS;\ float PT_POLARIZER;\ float PT_POLARIZER_TINT;\ float PT_SATURATION;\ float PT_HIGHLIGHTS;\ float PT_WHITE_BOOST;\ float PT_WHITE_TRANSPARENCY;\ float PT_BRIGHTNESS_GRID;\ };\ \ uniform LIBRA_UBO_VERTEX LIBRA_UBO_VERTEX_INSTANCE;\ \ struct LIBRA_PUSH_VERTEX\ {\ vec4 SourceSize;\ vec4 OutputSize;\ float PT_ACCEL_ENABLE;\ float PT_ACCEL_SENSITIVITY;\ float PT_SHADOW_MOTION;\ float PT_SHADOW_MAX_OFFSET;\ float PT_SHADOW_MOTION_X;\ float PT_SHADOW_MOTION_Y;\ float PT_SHADOW_OFFSET_X;\ float PT_SHADOW_OFFSET_Y;\ float PT_ENABLE;\ float PT_BRIGHTNESS_MODE;\ float PT_SHADOW_ENABLE;\ float PT_SHADOW_BLUR;\ float PT_SHADOW_OPACITY;\ float PT_THRESHOLD;\ float PT_SHADOW_FAST_BLUR;\ float PT_PIXEL_MODE;\ float PT_BASE_ALPHA;\ };\ \ uniform LIBRA_PUSH_VERTEX LIBRA_PUSH_VERTEX_INSTANCE;\ \ attribute vec4 Position;\ varying vec2 LIBRA_VARYING_0;\ attribute vec2 TexCoord;\ varying vec2 LIBRA_VARYING_1;\ varying float LIBRA_VARYING_2;\ varying vec2 LIBRA_VARYING_3;\ \ vec2 getOrientedTilt(vec3 accel)\ {\ float magnitude = length(accel);\ if (magnitude < 0.00999999977648258209228515625)\ {\ return vec2(0.0);\ }\ vec3 dir = accel / vec3(magnitude);\ return vec2(-dir.x, dir.y);\ }\ \ void main()\ {\ gl_Position = LIBRA_UBO_VERTEX_INSTANCE.MVP * Position;\ LIBRA_VARYING_0 = TexCoord;\ LIBRA_VARYING_1 = LIBRA_PUSH_VERTEX_INSTANCE.OutputSize.zw;\ float scale_x = LIBRA_PUSH_VERTEX_INSTANCE.OutputSize.x / 640.0;\ float scale_y = LIBRA_PUSH_VERTEX_INSTANCE.OutputSize.y / 480.0;\ LIBRA_VARYING_2 = sqrt(scale_x * scale_y);\ vec2 gravity = vec2(0.0);\ bool has_sensors = false;\ if (LIBRA_PUSH_VERTEX_INSTANCE.PT_ACCEL_ENABLE > 0.5)\ {\ vec3 accel = LIBRA_UBO_VERTEX_INSTANCE.Accelerometer;\ has_sensors = length(accel) > 0.00999999977648258209228515625;\ if (has_sensors)\ {\ vec3 param = accel;\ gravity = getOrientedTilt(param);\ gravity = clamp(gravity * LIBRA_PUSH_VERTEX_INSTANCE.PT_ACCEL_SENSITIVITY, vec2(-1.0), vec2(1.0));\ }\ }\ bool _132 = LIBRA_PUSH_VERTEX_INSTANCE.PT_SHADOW_MOTION > 0.5;\ bool _138;\ if (_132)\ {\ _138 = LIBRA_PUSH_VERTEX_INSTANCE.PT_ACCEL_ENABLE > 0.5;\ }\ else\ {\ _138 = _132;\ }\ if (_138 && has_sensors)\ {\ vec2 base = vec2(LIBRA_PUSH_VERTEX_INSTANCE.PT_SHADOW_MOTION_X, LIBRA_PUSH_VERTEX_INSTANCE.PT_SHADOW_MOTION_Y);\ LIBRA_VARYING_3 = base + (gravity * LIBRA_PUSH_VERTEX_INSTANCE.PT_SHADOW_MAX_OFFSET);\ }\ else\ {\ LIBRA_VARYING_3 = vec2(LIBRA_PUSH_VERTEX_INSTANCE.PT_SHADOW_OFFSET_X, LIBRA_PUSH_VERTEX_INSTANCE.PT_SHADOW_OFFSET_Y);\ }\ }\ \ ",["wrap_mode"]="clamp_to_border",},},["textures"]={},}