@acris
Mince !
Bon, j'ai une autre piste : Le shader est peut-être modifiable pour l'empécher de tourner de 90° ?
Je poste le code ici, on sait jamais si quelque chose tape dans l'oeil d'un codeur :
mirror.glslp :
shaders = "1"
shader0 = "shaders_glsl/mirror/c**ktail_mirror.glsl"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
parameters = "height;width;location_y;location_x;ZOOM"
height = "-1.145000"
width = "1.750000"
location_y = "0.800000"
location_x = "-0.500000"
ZOOM = "1.000000"
c**ktail_mirror.glsl :
#pragma parameter height "Image Height" -1.145 -6.0 6.0 0.01
#pragma parameter width "Image Width" 2.0 0.0 10.0 0.05
#pragma parameter location_y "Image Location Y" 0.75 -4.0 4.0 0.005
#pragma parameter location_x "Image Location X" -0.5 -4.0 4.0 0.005
#pragma parameter ZOOM "Image Zoom" 1.0 0.0 2.0 0.005
#if defined(VERTEX)
#if VERSION >= 130
#define COMPAT_VARYING out
#define COMPAT_ATTRIBUTE in
#define COMPAT_TEXTURE texture
#else
#define COMPAT_VARYING varying
#define COMPAT_ATTRIBUTE attribute
#define COMPAT_TEXTURE texture2D
#endif
#ifdef GL_ES
#define COMPAT_PRECISION mediump
#else
#define COMPAT_PRECISION
#endif
COMPAT_VARYING vec4 _color1;
COMPAT_VARYING float _frame_rotation;
struct input_dummy {
vec2 _video_size;
vec2 _texture_size;
vec2 _output_dummy_size;
float _frame_count;
float _frame_direction;
float _frame_rotation;
};
struct output_dummy {
vec4 _color1;
};
vec4 _oPosition1;
vec4 _r0020;
vec4 _r0022;
vec2 _r0024;
vec2 _r0026;
COMPAT_ATTRIBUTE vec4 VertexCoord;
COMPAT_ATTRIBUTE vec4 COLOR;
COMPAT_VARYING vec4 COL0;
COMPAT_VARYING vec4 TEX0;
COMPAT_VARYING vec4 TEX1;
uniform mat4 MVPMatrix;
uniform COMPAT_PRECISION int FrameDirection;
uniform COMPAT_PRECISION int FrameCount;
uniform COMPAT_PRECISION vec2 OutputSize;
uniform COMPAT_PRECISION vec2 TextureSize;
uniform COMPAT_PRECISION vec2 InputSize;
#ifdef PARAMETER_UNIFORM
uniform COMPAT_PRECISION float height;
uniform COMPAT_PRECISION float width;
uniform COMPAT_PRECISION float location_y;
uniform COMPAT_PRECISION float location_x;
uniform COMPAT_PRECISION float ZOOM;
#else
#define height -1.145
#define width 2.0
#define location_y 0.75
#define location_x -0.5
#define ZOOM 1.0
#endif
void main()
{
vec4 _oColor;
vec2 _otexCoord1;
vec2 _otexCoord2;
_r0020 = VertexCoord.xMVPMatrix[0];
_r0020 = _r0020 + VertexCoord.yMVPMatrix[1];
_r0020 = _r0020 + VertexCoord.zMVPMatrix[2];
_r0020 = _r0020 + VertexCoord.wMVPMatrix[3];
_r0022 = _r0020.xvec4( height, 0.00000000E+00, 0.00000000E+00, 0.00000000E+00);
_r0022 = _r0022 + _r0020.yvec4( 0.00000000E+00, width, 0.00000000E+00, 0.00000000E+00);
_r0022 = _r0022 + _r0020.zvec4( 0.00000000E+00, 0.00000000E+00, 1.00000000E+00, 0.00000000E+00);
_r0022 = _r0022 + _r0020.wvec4( 0.00000000E+00, 0.00000000E+00, 0.00000000E+00, 1.00000000E+00);
_oPosition1 = _r0022;
_oColor = COLOR;
_r0024 = VertexCoord.xvec2( 0.00000000E+00, 1.00000000E+00);
_r0024 = _r0024 + VertexCoord.yvec2( -1.00000000E+00, 0.00000000E+00);
_otexCoord1 = _r0024 + vec2( location_y, location_x);
_r0026 = VertexCoord.xvec2( 0.00000000E+00, 1.00000000E+00);
_r0026 = _r0026 + VertexCoord.yvec2( -1.00000000E+00, 0.00000000E+00);
_otexCoord2 = -(_r0026 + vec2( 1.0 - location_y, -1.0 - location_x));
gl_Position = _r0022;
COL0 = COLOR;
TEX0.xy = _otexCoord1;
TEX1.xy = _otexCoord2;
}
#elif defined(FRAGMENT)
#if VERSION >= 130
#define COMPAT_VARYING in
#define COMPAT_TEXTURE texture
out vec4 FragColor;
#else
#define COMPAT_VARYING varying
#define FragColor gl_FragColor
#define COMPAT_TEXTURE texture2D
#endif
#ifdef GL_ES
#ifdef GL_FRAGMENT_PRECISION_HIGH
precision highp float;
#else
precision mediump float;
#endif
#define COMPAT_PRECISION mediump
#else
#define COMPAT_PRECISION
#endif
COMPAT_VARYING vec4 _color1;
COMPAT_VARYING float _frame_rotation;
struct input_dummy {
vec2 _video_size;
vec2 _texture_size;
vec2 _output_dummy_size;
float _frame_count;
float _frame_direction;
float _frame_rotation;
};
struct output_dummy {
vec4 _color1;
};
vec4 _TMP1;
vec4 _TMP0;
uniform sampler2D Texture;
COMPAT_VARYING vec4 TEX0;
COMPAT_VARYING vec4 TEX1;
uniform COMPAT_PRECISION int FrameDirection;
uniform COMPAT_PRECISION int FrameCount;
uniform COMPAT_PRECISION vec2 OutputSize;
uniform COMPAT_PRECISION vec2 TextureSize;
uniform COMPAT_PRECISION vec2 InputSize;
#ifdef PARAMETER_UNIFORM
uniform COMPAT_PRECISION float height;
uniform COMPAT_PRECISION float width;
uniform COMPAT_PRECISION float location_y;
uniform COMPAT_PRECISION float location_x;
uniform COMPAT_PRECISION float ZOOM;
#endif
void main()
{
vec4 _color;
//fix for clamping issues on GLES
vec2 fragCoord1 = TEX0.xy * InputSize / TextureSize;
vec2 fragCoord2 = TEX1.xy* InputSize / TextureSize;
_TMP0 = vec4(0.0);
if ( fragCoord1.x < 1.0 && fragCoord1.x > 0.0 && fragCoord1.y < 1.0 && fragCoord1.y > 0.0 )
_TMP0 = COMPAT_TEXTURE(Texture, TEX0.xy / ZOOM);
_TMP1 = vec4(0.0);
if ( fragCoord2.x < 1.0 && fragCoord2.x > 0.0 && fragCoord2.y < 1.0 && fragCoord2.y > 0.0 )
_TMP1 = COMPAT_TEXTURE(Texture, TEX1.xy / ZOOM);
_color = _TMP0 + _TMP1;
FragColor = _color;
return;
}
#endif