[vlc-commits] direct3d11: use a simplified shader function to sample pixels from the texture
Steve Lhomme
git at videolan.org
Thu Dec 21 10:53:00 CET 2017
vlc/vlc-3.0 | branch: master | Steve Lhomme <robUx4 at videolabs.io> | Tue Dec 19 10:32:00 2017 +0100| [8ba5932f527b09804de94e0f809fc4fff696745b] | committer: Jean-Baptiste Kempf
direct3d11: use a simplified shader function to sample pixels from the texture
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
(cherry picked from commit ca2193a6ab25bd029ceb33fa58ae363d5667cdb8)
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=8ba5932f527b09804de94e0f809fc4fff696745b
---
modules/video_output/win32/direct3d11.c | 26 ++++++++++++++++----------
1 file changed, 16 insertions(+), 10 deletions(-)
diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index b4bc308835..ecf76fdfe6 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -367,11 +367,17 @@ static const char* globPixelShaderDefault = "\
%s;\
}\
\
+ inline float4 sampleTexture(SamplerState samplerState, float4 coords) {\
+ float4 sample;\
+ %s /* sampling routine in sample */\
+ return sample;\
+ }\
+ \
float4 main( PS_INPUT In ) : SV_TARGET\
{\
float4 sample;\
\
- %s /* sampling routine in sample */\
+ sample = sampleTexture( SamplerStates[0], In.Texture );\
float4 rgba = mul(mul(sample, WhitePoint), Colorspace);\
float opacity = rgba.a * Opacity;\
float3 rgb = (float3)rgba;\
@@ -1715,15 +1721,15 @@ static HRESULT CompilePixelShader(vout_display_t *vd, const d3d_format_t *format
case DXGI_FORMAT_NV12:
case DXGI_FORMAT_P010:
psz_sampler =
- "sample.x = shaderTexture[0].Sample(SampleType, In.Texture).x;\
- sample.yz = shaderTexture[1].Sample(SampleType, In.Texture).xy;\
+ "sample.x = shaderTexture[0].Sample(samplerState, coords).x;\
+ sample.yz = shaderTexture[1].Sample(samplerState, coords).xy;\
sample.a = 1;";
break;
case DXGI_FORMAT_YUY2:
psz_sampler =
- "sample.x = shaderTexture[0].Sample(SampleType, In.Texture).x;\
- sample.y = shaderTexture[0].Sample(SampleType, In.Texture).y;\
- sample.z = shaderTexture[0].Sample(SampleType, In.Texture).a;\
+ "sample.x = shaderTexture[0].Sample(samplerState, coords).x;\
+ sample.y = shaderTexture[0].Sample(samplerState, coords).y;\
+ sample.z = shaderTexture[0].Sample(samplerState, coords).a;\
sample.a = 1;";
break;
case DXGI_FORMAT_R8G8B8A8_UNORM:
@@ -1731,13 +1737,13 @@ static HRESULT CompilePixelShader(vout_display_t *vd, const d3d_format_t *format
case DXGI_FORMAT_B8G8R8X8_UNORM:
case DXGI_FORMAT_B5G6R5_UNORM:
psz_sampler =
- "sample = shaderTexture[0].Sample(SampleType, In.Texture);";
+ "sample = shaderTexture[0].Sample(samplerState, coords);";
break;
case DXGI_FORMAT_UNKNOWN:
psz_sampler =
- "sample.x = shaderTexture[0].Sample(SampleType, In.Texture).x;\
- sample.y = shaderTexture[1].Sample(SampleType, In.Texture).x;\
- sample.z = shaderTexture[2].Sample(SampleType, In.Texture).x;\
+ "sample.x = shaderTexture[0].Sample(samplerState, coords).x;\
+ sample.y = shaderTexture[1].Sample(samplerState, coords).x;\
+ sample.z = shaderTexture[2].Sample(samplerState, coords).x;\
sample.a = 1;";
break;
default:
More information about the vlc-commits
mailing list