aboutsummaryrefslogtreecommitdiff
path: root/system
diff options
context:
space:
mode:
Diffstat (limited to 'system')
-rwxr-xr-xsystem/settings/settings.xml107
-rw-r--r--system/shaders/GL/1.2/gl_yuv2rgb_basic.glsl9
-rw-r--r--system/shaders/GL/1.5/gl_tonemap.glsl4
-rw-r--r--system/shaders/GL/1.5/gl_yuv2rgb_basic.glsl36
-rw-r--r--system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl38
-rw-r--r--system/shaders/GLES/2.0/gles_convolution-4x4.frag (renamed from system/shaders/GLES/2.0/gles_convolution-4x4.glsl)0
-rw-r--r--system/shaders/GLES/2.0/gles_convolution-6x6.frag (renamed from system/shaders/GLES/2.0/gles_convolution-6x6.glsl)0
-rw-r--r--system/shaders/GLES/2.0/gles_shader.vert (renamed from system/shaders/GLES/2.0/gles_guishader_vert.glsl)0
-rw-r--r--system/shaders/GLES/2.0/gles_shader_default.frag (renamed from system/shaders/GLES/2.0/gles_guishader_frag_default.glsl)0
-rw-r--r--system/shaders/GLES/2.0/gles_shader_fonts.frag (renamed from system/shaders/GLES/2.0/gles_guishader_frag_fonts.glsl)0
-rw-r--r--system/shaders/GLES/2.0/gles_shader_multi.frag (renamed from system/shaders/GLES/2.0/gles_guishader_frag_multi.glsl)0
-rw-r--r--system/shaders/GLES/2.0/gles_shader_multi_blendcolor.frag (renamed from system/shaders/GLES/2.0/gles_guishader_frag_multi_blendcolor.glsl)0
-rw-r--r--system/shaders/GLES/2.0/gles_shader_rgba.frag (renamed from system/shaders/GLES/2.0/gles_guishader_frag_rgba.glsl)0
-rw-r--r--system/shaders/GLES/2.0/gles_shader_rgba_blendcolor.frag (renamed from system/shaders/GLES/2.0/gles_guishader_frag_rgba_blendcolor.glsl)0
-rw-r--r--system/shaders/GLES/2.0/gles_shader_rgba_bob.frag (renamed from system/shaders/GLES/2.0/gles_guishader_frag_rgba_bob.glsl)0
-rw-r--r--system/shaders/GLES/2.0/gles_shader_rgba_bob_oes.frag (renamed from system/shaders/GLES/2.0/gles_guishader_frag_rgba_bob_oes.glsl)0
-rw-r--r--system/shaders/GLES/2.0/gles_shader_rgba_oes.frag (renamed from system/shaders/GLES/2.0/gles_guishader_frag_rgba_oes.glsl)0
-rw-r--r--system/shaders/GLES/2.0/gles_shader_texture.frag (renamed from system/shaders/GLES/2.0/gles_guishader_frag_texture.glsl)0
-rw-r--r--system/shaders/GLES/2.0/gles_shader_texture_noblend.frag (renamed from system/shaders/GLES/2.0/gles_guishader_frag_texture_noblend.glsl)0
-rw-r--r--system/shaders/GLES/2.0/gles_videofilter.frag11
-rw-r--r--system/shaders/GLES/2.0/gles_videofilter.vert14
-rw-r--r--system/shaders/GLES/2.0/gles_yuv2rgb.vert (renamed from system/shaders/GLES/2.0/gles_yuv2rgb_vertex.glsl)2
-rw-r--r--system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag (renamed from system/shaders/GLES/2.0/gles_yuv2rgb_basic.glsl)7
-rw-r--r--system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag (renamed from system/shaders/GLES/2.0/gles_yuv2rgb_bob.glsl)0
-rw-r--r--system/shaders/yuv2rgb_d3d.fx10
25 files changed, 104 insertions, 134 deletions
diff --git a/system/settings/settings.xml b/system/settings/settings.xml
index 2537075b23..fc252bd86d 100755
--- a/system/settings/settings.xml
+++ b/system/settings/settings.xml
@@ -2086,113 +2086,6 @@
</setting>
</group>
</category>
- <category id="gameskeyboard" label="35150">
- <group id="1" label="128">
- <setting id="gameskeyboard.enablekeyboard" type="boolean" label="35152" help="35153">
- <level>0</level>
- <control type="toggle" />
- <default>true</default>
- </setting>
- </group>
- <group id="2" label="35151">
- <setting id="gameskeyboard.keyboardplayers" type="integer" label="35154" help="35155">
- <level>0</level>
- <default>1</default>
- <constraints>
- <minimum>1</minimum>
- <step>1</step>
- <maximum>8</maximum>
- </constraints>
- <dependencies>
- <dependency type="enable" setting="gameskeyboard.enablekeyboard">true</dependency>
- </dependencies>
- <control type="slider" format="integer">
- <popup>true</popup>
- <formatlabel>35156</formatlabel> <!-- TODO: Add a <formattype>integer</formattype> tag -->
- </control>
- </setting>
- <setting id="gameskeyboard.keyboardplayerconfig1" type="action" label="35157" help="35155">
- <level>0</level>
- <control type="button" format="action" />
- <dependencies>
- <dependency type="visible">
- <condition on="property" name="gte" setting="gameskeyboard.keyboardplayers">1</condition>
- </dependency>
- <dependency type="enable" setting="gameskeyboard.enablekeyboard">true</dependency>
- </dependencies>
- </setting>
- <setting id="gameskeyboard.keyboardplayerconfig2" type="action" label="35158" help="35155">
- <level>0</level>
- <control type="button" format="action" />
- <dependencies>
- <dependency type="visible">
- <condition on="property" name="gte" setting="gameskeyboard.keyboardplayers">2</condition>
- </dependency>
- <dependency type="enable" setting="gameskeyboard.enablekeyboard">true</dependency>
- </dependencies>
- </setting>
- <setting id="gameskeyboard.keyboardplayerconfig3" type="action" label="35159" help="35155">
- <level>0</level>
- <control type="button" format="action" />
- <dependencies>
- <dependency type="visible">
- <condition on="property" name="gte" setting="gameskeyboard.keyboardplayers">3</condition>
- </dependency>
- <dependency type="enable" setting="gameskeyboard.enablekeyboard">true</dependency>
- </dependencies>
- </setting>
- <setting id="gameskeyboard.keyboardplayerconfig4" type="action" label="35160" help="35155">
- <level>0</level>
- <control type="button" format="action" />
- <dependencies>
- <dependency type="visible">
- <condition on="property" name="gte" setting="gameskeyboard.keyboardplayers">4</condition>
- </dependency>
- <dependency type="enable" setting="gameskeyboard.enablekeyboard">true</dependency>
- </dependencies>
- </setting>
- <setting id="gameskeyboard.keyboardplayerconfig5" type="action" label="35161" help="35155">
- <level>0</level>
- <control type="button" format="action" />
- <dependencies>
- <dependency type="visible">
- <condition on="property" name="gte" setting="gameskeyboard.keyboardplayers">5</condition>
- </dependency>
- <dependency type="enable" setting="gameskeyboard.enablekeyboard">true</dependency>
- </dependencies>
- </setting>
- <setting id="gameskeyboard.keyboardplayerconfig6" type="action" label="35162" help="35155">
- <level>0</level>
- <control type="button" format="action" />
- <dependencies>
- <dependency type="visible">
- <condition on="property" name="gte" setting="gameskeyboard.keyboardplayers">6</condition>
- </dependency>
- <dependency type="enable" setting="gameskeyboard.enablekeyboard">true</dependency>
- </dependencies>
- </setting>
- <setting id="gameskeyboard.keyboardplayerconfig7" type="action" label="35163" help="35155">
- <level>0</level>
- <control type="button" format="action" />
- <dependencies>
- <dependency type="visible">
- <condition on="property" name="gte" setting="gameskeyboard.keyboardplayers">7</condition>
- </dependency>
- <dependency type="enable" setting="gameskeyboard.enablekeyboard">true</dependency>
- </dependencies>
- </setting>
- <setting id="gameskeyboard.keyboardplayerconfig8" type="action" label="35164" help="35155">
- <level>0</level>
- <control type="button" format="action" />
- <dependencies>
- <dependency type="visible">
- <condition on="property" name="gte" setting="gameskeyboard.keyboardplayers">8</condition>
- </dependency>
- <dependency type="enable" setting="gameskeyboard.enablekeyboard">true</dependency>
- </dependencies>
- </setting>
- </group>
- </category>
</section>
<section id="system" label="13000" help="36349">
<category id="display" label="14220" help="36603">
diff --git a/system/shaders/GL/1.2/gl_yuv2rgb_basic.glsl b/system/shaders/GL/1.2/gl_yuv2rgb_basic.glsl
index 4a3b059c9b..e4ea964a72 100644
--- a/system/shaders/GL/1.2/gl_yuv2rgb_basic.glsl
+++ b/system/shaders/GL/1.2/gl_yuv2rgb_basic.glsl
@@ -33,6 +33,9 @@ varying vec2 m_cordV;
uniform vec2 m_step;
uniform mat4 m_yuvmat;
uniform float m_stretch;
+uniform mat3 m_primMat;
+uniform float m_gammaDstInv;
+uniform float m_gammaSrc;
uniform float m_alpha;
vec2 stretch(vec2 pos)
@@ -118,5 +121,11 @@ vec4 process()
#endif
+#if defined(XBMC_COL_CONVERSION)
+ rgb.rgb = pow(rgb.rgb, vec3(m_gammaSrc));
+ rgb.rgb = m_primMat * rgb.rgb;
+ rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv));
+#endif
+
return rgb;
}
diff --git a/system/shaders/GL/1.5/gl_tonemap.glsl b/system/shaders/GL/1.5/gl_tonemap.glsl
new file mode 100644
index 0000000000..bcec4e6550
--- /dev/null
+++ b/system/shaders/GL/1.5/gl_tonemap.glsl
@@ -0,0 +1,4 @@
+float tonemap(float val)
+{
+ return val * (1 + val/(m_toneP1*m_toneP1))/(1 + val);
+}
diff --git a/system/shaders/GL/1.5/gl_yuv2rgb_basic.glsl b/system/shaders/GL/1.5/gl_yuv2rgb_basic.glsl
index 79c7a20d1e..b4fb012910 100644
--- a/system/shaders/GL/1.5/gl_yuv2rgb_basic.glsl
+++ b/system/shaders/GL/1.5/gl_yuv2rgb_basic.glsl
@@ -12,6 +12,11 @@ uniform vec2 m_step;
uniform mat4 m_yuvmat;
uniform float m_stretch;
uniform float m_alpha;
+uniform mat3 m_primMat;
+uniform float m_gammaDstInv;
+uniform float m_gammaSrc;
+uniform float m_toneP1;
+uniform vec3 m_coefsDst;
in vec2 m_cordY;
in vec2 m_cordU;
in vec2 m_cordV;
@@ -38,25 +43,20 @@ vec2 stretch(vec2 pos)
vec4 process()
{
vec4 rgb;
+ vec4 yuv;
+
#if defined(XBMC_YV12)
- vec4 yuv;
yuv.rgba = vec4( texture(m_sampY, stretch(m_cordY)).r
, texture(m_sampU, stretch(m_cordU)).r
, texture(m_sampV, stretch(m_cordV)).r
, 1.0 );
- rgb = m_yuvmat * yuv;
- rgb.a = m_alpha;
-
#elif defined(XBMC_NV12)
- vec4 yuv;
yuv.rgba = vec4( texture(m_sampY, stretch(m_cordY)).r
, texture(m_sampU, stretch(m_cordU)).rg
, 1.0 );
- rgb = m_yuvmat * yuv;
- rgb.a = m_alpha;
#elif defined(XBMC_YUY2) || defined(XBMC_UYVY)
@@ -83,13 +83,29 @@ vec4 process()
vec2 outUV = mix(c1.br, c2.br, f.x);
#endif //XBMC_YUY2
- float outY = mix(leftY, rightY, step(0.5, f.x));
+ float outY = mix(leftY, rightY, step(0.5, f.x));
- vec4 yuv = vec4(outY, outUV, 1.0);
- rgb = m_yuvmat * yuv;
+ yuv = vec4(outY, outUV, 1.0);
+#endif
+
+#if defined(XBMC_TONE_MAPPING)
+ //float scale = tonemap(yuv.x) / yuv.x;
+#endif
+
+ rgb = m_yuvmat * yuv;
rgb.a = m_alpha;
+#if defined(XBMC_COL_CONVERSION)
+ rgb.rgb = pow(rgb.rgb, vec3(m_gammaSrc));
+ rgb.rgb = m_primMat * rgb.rgb;
+ rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv));
+
+#if defined(XBMC_TONE_MAPPING)
+ float luma = dot(rgb.rgb, m_coefsDst);
+ rgb.rgb *= tonemap(luma) / luma;
+#endif
+
#endif
return rgb;
diff --git a/system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl b/system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl
index c1376f09d1..bbcfe19a96 100644
--- a/system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl
+++ b/system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl
@@ -13,6 +13,11 @@ uniform mat4 m_yuvmat;
uniform float m_stretch;
uniform float m_alpha;
uniform sampler1D m_kernelTex;
+uniform mat3 m_primMat;
+uniform float m_gammaDstInv;
+uniform float m_gammaSrc;
+uniform float m_toneP1;
+uniform vec3 m_coefsDst;
in vec2 m_cordY;
in vec2 m_cordU;
in vec2 m_cordV;
@@ -85,23 +90,36 @@ float filter_0(sampler2D sampler, vec2 coord)
vec4 process()
{
vec4 rgb;
-#if defined(XBMC_YV12)
+ vec4 yuv;
- vec4 yuv = vec4(filter_0(m_sampY, stretch(m_cordY)),
- texture(m_sampU, stretch(m_cordU)).r,
- texture(m_sampV, stretch(m_cordV)).r,
- 1.0);
+#if defined(XBMC_YV12)
- rgb = m_yuvmat * yuv;
- rgb.a = m_alpha;
+ yuv = vec4(filter_0(m_sampY, stretch(m_cordY)),
+ texture(m_sampU, stretch(m_cordU)).r,
+ texture(m_sampV, stretch(m_cordV)).r,
+ 1.0);
#elif defined(XBMC_NV12)
- vec4 yuv = vec4(filter_0(m_sampY, stretch(m_cordY)),
- texture(m_sampU, stretch(m_cordU)).rg,
- 1.0);
+ yuv = vec4(filter_0(m_sampY, stretch(m_cordY)),
+ texture(m_sampU, stretch(m_cordU)).rg,
+ 1.0);
+
+#endif
+
rgb = m_yuvmat * yuv;
rgb.a = m_alpha;
+
+#if defined(XBMC_COL_CONVERSION)
+ rgb.rgb = pow(rgb.rgb, vec3(m_gammaSrc));
+ rgb.rgb = m_primMat * rgb.rgb;
+ rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv));
+
+#if defined(XBMC_TONE_MAPPING)
+ float luma = dot(rgb.rgb, m_coefsDst);
+ rgb.rgb *= tonemap(luma) / luma;
+#endif
+
#endif
return rgb;
diff --git a/system/shaders/GLES/2.0/gles_convolution-4x4.glsl b/system/shaders/GLES/2.0/gles_convolution-4x4.frag
index 89e5b8d58d..89e5b8d58d 100644
--- a/system/shaders/GLES/2.0/gles_convolution-4x4.glsl
+++ b/system/shaders/GLES/2.0/gles_convolution-4x4.frag
diff --git a/system/shaders/GLES/2.0/gles_convolution-6x6.glsl b/system/shaders/GLES/2.0/gles_convolution-6x6.frag
index 8333d51f32..8333d51f32 100644
--- a/system/shaders/GLES/2.0/gles_convolution-6x6.glsl
+++ b/system/shaders/GLES/2.0/gles_convolution-6x6.frag
diff --git a/system/shaders/GLES/2.0/gles_guishader_vert.glsl b/system/shaders/GLES/2.0/gles_shader.vert
index 018961f556..018961f556 100644
--- a/system/shaders/GLES/2.0/gles_guishader_vert.glsl
+++ b/system/shaders/GLES/2.0/gles_shader.vert
diff --git a/system/shaders/GLES/2.0/gles_guishader_frag_default.glsl b/system/shaders/GLES/2.0/gles_shader_default.frag
index 6f4ae0b19c..6f4ae0b19c 100644
--- a/system/shaders/GLES/2.0/gles_guishader_frag_default.glsl
+++ b/system/shaders/GLES/2.0/gles_shader_default.frag
diff --git a/system/shaders/GLES/2.0/gles_guishader_frag_fonts.glsl b/system/shaders/GLES/2.0/gles_shader_fonts.frag
index 953d81dbc2..953d81dbc2 100644
--- a/system/shaders/GLES/2.0/gles_guishader_frag_fonts.glsl
+++ b/system/shaders/GLES/2.0/gles_shader_fonts.frag
diff --git a/system/shaders/GLES/2.0/gles_guishader_frag_multi.glsl b/system/shaders/GLES/2.0/gles_shader_multi.frag
index 49202d2848..49202d2848 100644
--- a/system/shaders/GLES/2.0/gles_guishader_frag_multi.glsl
+++ b/system/shaders/GLES/2.0/gles_shader_multi.frag
diff --git a/system/shaders/GLES/2.0/gles_guishader_frag_multi_blendcolor.glsl b/system/shaders/GLES/2.0/gles_shader_multi_blendcolor.frag
index c01ecd29e7..c01ecd29e7 100644
--- a/system/shaders/GLES/2.0/gles_guishader_frag_multi_blendcolor.glsl
+++ b/system/shaders/GLES/2.0/gles_shader_multi_blendcolor.frag
diff --git a/system/shaders/GLES/2.0/gles_guishader_frag_rgba.glsl b/system/shaders/GLES/2.0/gles_shader_rgba.frag
index d5d7ffb3e6..d5d7ffb3e6 100644
--- a/system/shaders/GLES/2.0/gles_guishader_frag_rgba.glsl
+++ b/system/shaders/GLES/2.0/gles_shader_rgba.frag
diff --git a/system/shaders/GLES/2.0/gles_guishader_frag_rgba_blendcolor.glsl b/system/shaders/GLES/2.0/gles_shader_rgba_blendcolor.frag
index 329cc408cc..329cc408cc 100644
--- a/system/shaders/GLES/2.0/gles_guishader_frag_rgba_blendcolor.glsl
+++ b/system/shaders/GLES/2.0/gles_shader_rgba_blendcolor.frag
diff --git a/system/shaders/GLES/2.0/gles_guishader_frag_rgba_bob.glsl b/system/shaders/GLES/2.0/gles_shader_rgba_bob.frag
index b1c1628204..b1c1628204 100644
--- a/system/shaders/GLES/2.0/gles_guishader_frag_rgba_bob.glsl
+++ b/system/shaders/GLES/2.0/gles_shader_rgba_bob.frag
diff --git a/system/shaders/GLES/2.0/gles_guishader_frag_rgba_bob_oes.glsl b/system/shaders/GLES/2.0/gles_shader_rgba_bob_oes.frag
index bbab5c4091..bbab5c4091 100644
--- a/system/shaders/GLES/2.0/gles_guishader_frag_rgba_bob_oes.glsl
+++ b/system/shaders/GLES/2.0/gles_shader_rgba_bob_oes.frag
diff --git a/system/shaders/GLES/2.0/gles_guishader_frag_rgba_oes.glsl b/system/shaders/GLES/2.0/gles_shader_rgba_oes.frag
index 55e311cf1e..55e311cf1e 100644
--- a/system/shaders/GLES/2.0/gles_guishader_frag_rgba_oes.glsl
+++ b/system/shaders/GLES/2.0/gles_shader_rgba_oes.frag
diff --git a/system/shaders/GLES/2.0/gles_guishader_frag_texture.glsl b/system/shaders/GLES/2.0/gles_shader_texture.frag
index 82b60d9a02..82b60d9a02 100644
--- a/system/shaders/GLES/2.0/gles_guishader_frag_texture.glsl
+++ b/system/shaders/GLES/2.0/gles_shader_texture.frag
diff --git a/system/shaders/GLES/2.0/gles_guishader_frag_texture_noblend.glsl b/system/shaders/GLES/2.0/gles_shader_texture_noblend.frag
index 7072a167f0..7072a167f0 100644
--- a/system/shaders/GLES/2.0/gles_guishader_frag_texture_noblend.glsl
+++ b/system/shaders/GLES/2.0/gles_shader_texture_noblend.frag
diff --git a/system/shaders/GLES/2.0/gles_videofilter.frag b/system/shaders/GLES/2.0/gles_videofilter.frag
new file mode 100644
index 0000000000..d4c15eeee5
--- /dev/null
+++ b/system/shaders/GLES/2.0/gles_videofilter.frag
@@ -0,0 +1,11 @@
+#version 100
+
+precision mediump float;
+
+uniform sampler2D img;
+varying vec2 cord;
+
+void main()
+{
+ gl_FragColor = texture2D(img, cord);
+} \ No newline at end of file
diff --git a/system/shaders/GLES/2.0/gles_videofilter.vert b/system/shaders/GLES/2.0/gles_videofilter.vert
new file mode 100644
index 0000000000..2d5a0f9b44
--- /dev/null
+++ b/system/shaders/GLES/2.0/gles_videofilter.vert
@@ -0,0 +1,14 @@
+#version 100
+
+attribute vec4 m_attrpos;
+attribute vec2 m_attrcord;
+varying vec2 cord;
+uniform mat4 m_proj;
+uniform mat4 m_model;
+
+void main ()
+{
+ mat4 mvp = m_proj * m_model;
+ gl_Position = mvp * m_attrpos;
+ cord = m_attrcord.xy;
+}
diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_vertex.glsl b/system/shaders/GLES/2.0/gles_yuv2rgb.vert
index 481c9d3d99..43b4b06dcc 100644
--- a/system/shaders/GLES/2.0/gles_yuv2rgb_vertex.glsl
+++ b/system/shaders/GLES/2.0/gles_yuv2rgb.vert
@@ -18,7 +18,7 @@
*
*/
- #version 100
+#version 100
attribute vec4 m_attrpos;
attribute vec2 m_attrcordY;
diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.glsl b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag
index 575aa42e9c..4447b6aa7f 100644
--- a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.glsl
+++ b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag
@@ -30,7 +30,6 @@ varying vec2 m_cordU;
varying vec2 m_cordV;
uniform vec2 m_step;
uniform mat4 m_yuvmat;
-uniform float m_stretch;
uniform float m_alpha;
void main()
@@ -51,9 +50,9 @@ void main()
#elif defined(XBMC_NV12_RRG)
vec4 yuv;
- yuv.rgba = vec4( texture2D(m_sampY, stretch(m_cordY)).r
- , texture2D(m_sampU, stretch(m_cordU)).r
- , texture2D(m_sampV, stretch(m_cordV)).g
+ yuv.rgba = vec4( texture2D(m_sampY, m_cordY).r
+ , texture2D(m_sampU, m_cordU).r
+ , texture2D(m_sampV, m_cordV).g
, 1.0 );
rgb = m_yuvmat * yuv;
diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.glsl b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag
index 28254e26af..28254e26af 100644
--- a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.glsl
+++ b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag
diff --git a/system/shaders/yuv2rgb_d3d.fx b/system/shaders/yuv2rgb_d3d.fx
index 85f6001db1..dd75621f08 100644
--- a/system/shaders/yuv2rgb_d3d.fx
+++ b/system/shaders/yuv2rgb_d3d.fx
@@ -24,7 +24,9 @@ texture2D g_Texture[3];
float4x4 g_ColorMatrix;
float2 g_StepXY;
float2 g_viewPort;
-
+float4x4 g_primMat;
+float g_gammaDstInv;
+float g_gammaSrc;
SamplerState YUVSampler : IMMUTABLE
{
@@ -125,7 +127,11 @@ float4 YUV2RGB(VS_OUTPUT In) : SV_TARGET
float4 YUV = float4(outY, outUV, 1.0);
#endif
- return output4(mul(YUV, g_ColorMatrix), In.TextureY);
+ float4 rgb = mul(YUV, g_ColorMatrix);
+#if defined(XBMC_COL_CONVERSION)
+ rgb.rgb = pow(mul(pow(rgb, g_gammaSrc), g_primMat), g_gammaDstInv).rgb;
+#endif
+ return output4(rgb, In.TextureY);
}
technique11 YUV2RGB_T