[vlc-commits] d3d11_shaders: move the vertex shader sources in d3d11_shaders
Steve Lhomme
git at videolan.org
Wed Oct 17 16:07:23 CEST 2018
vlc/vlc-3.0 | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Tue Feb 20 17:44:40 2018 +0100| [93125ccf65679129ad5e434e51a3fdb4773558e3] | committer: Steve Lhomme
d3d11_shaders: move the vertex shader sources in d3d11_shaders
And share them for anyone to use.
(cherry picked from commit 3a2fabe650988e556dcb8c597b0467384aadf89f)
> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=93125ccf65679129ad5e434e51a3fdb4773558e3
---
modules/video_output/win32/d3d11_shaders.c | 55 +++++++++++++++++++++++++++++
modules/video_output/win32/d3d11_shaders.h | 3 ++
modules/video_output/win32/direct3d11.c | 56 ------------------------------
3 files changed, 58 insertions(+), 56 deletions(-)
diff --git a/modules/video_output/win32/d3d11_shaders.c b/modules/video_output/win32/d3d11_shaders.c
index 101149e0d8..0b2a65353a 100644
--- a/modules/video_output/win32/d3d11_shaders.c
+++ b/modules/video_output/win32/d3d11_shaders.c
@@ -133,6 +133,61 @@ static const char* globPixelShaderDefault = "\
}\n\
";
+const char* globVertexShaderFlat = "\
+struct VS_INPUT\n\
+{\n\
+ float4 Position : POSITION;\n\
+ float4 Texture : TEXCOORD0;\n\
+};\n\
+\n\
+struct VS_OUTPUT\n\
+{\n\
+ float4 Position : SV_POSITION;\n\
+ float4 Texture : TEXCOORD0;\n\
+};\n\
+\n\
+VS_OUTPUT main( VS_INPUT In )\n\
+{\n\
+ return In;\n\
+}\n\
+";
+
+const char* globVertexShaderProjection = "\n\
+cbuffer VS_PROJECTION_CONST : register(b0)\n\
+{\n\
+ float4x4 RotX;\n\
+ float4x4 RotY;\n\
+ float4x4 RotZ;\n\
+ float4x4 View;\n\
+ float4x4 Projection;\n\
+};\n\
+struct VS_INPUT\n\
+{\n\
+ float4 Position : POSITION;\n\
+ float4 Texture : TEXCOORD0;\n\
+};\n\
+\n\
+struct VS_OUTPUT\n\
+{\n\
+ float4 Position : SV_POSITION;\n\
+ float4 Texture : TEXCOORD0;\n\
+};\n\
+\n\
+VS_OUTPUT main( VS_INPUT In )\n\
+{\n\
+ VS_OUTPUT Output;\n\
+ float4 pos = In.Position;\n\
+ pos = mul(RotY, pos);\n\
+ pos = mul(RotX, pos);\n\
+ pos = mul(RotZ, pos);\n\
+ pos = mul(View, pos);\n\
+ pos = mul(Projection, pos);\n\
+ Output.Position = pos;\n\
+ Output.Texture = In.Texture;\n\
+ return Output;\n\
+}\n\
+";
+
bool IsRGBShader(const d3d_format_t *cfg)
{
return cfg->resourceFormat[0] != DXGI_FORMAT_R8_UNORM &&
diff --git a/modules/video_output/win32/d3d11_shaders.h b/modules/video_output/win32/d3d11_shaders.h
index d965d9472e..737700e6f3 100644
--- a/modules/video_output/win32/d3d11_shaders.h
+++ b/modules/video_output/win32/d3d11_shaders.h
@@ -46,6 +46,9 @@ typedef struct {
unsigned luminance_peak;
} display_info_t;
+const char* globVertexShaderFlat;
+const char* globVertexShaderProjection;
+
ID3DBlob* D3D11_CompileShader(vlc_object_t *, const d3d11_handle_t *, const d3d11_device_t *,
const char *psz_shader, bool pixel);
#define D3D11_CompileShader(a,b,c,d,e) D3D11_CompileShader(VLC_OBJECT(a),b,c,d,e)
diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index 9d76bb03f0..b8e7e897d5 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -190,62 +190,6 @@ static void UpdatePicQuadPosition(vout_display_t *);
static int Control(vout_display_t *vd, int query, va_list args);
static void Manage(vout_display_t *vd);
-/* TODO: Move to a direct3d11_shaders header */
-static const char* globVertexShaderFlat = "\
- struct VS_INPUT\
- {\
- float4 Position : POSITION;\
- float4 Texture : TEXCOORD0;\
- };\
- \
- struct VS_OUTPUT\
- {\
- float4 Position : SV_POSITION;\
- float4 Texture : TEXCOORD0;\
- };\
- \
- VS_OUTPUT main( VS_INPUT In )\
- {\
- return In;\
- }\
-";
-
-static const char* globVertexShaderProjection = "\
- cbuffer VS_PROJECTION_CONST : register(b0)\
- {\
- float4x4 RotX;\
- float4x4 RotY;\
- float4x4 RotZ;\
- float4x4 View;\
- float4x4 Projection;\
- };\
- struct VS_INPUT\
- {\
- float4 Position : POSITION;\
- float4 Texture : TEXCOORD0;\
- };\
- \
- struct VS_OUTPUT\
- {\
- float4 Position : SV_POSITION;\
- float4 Texture : TEXCOORD0;\
- };\
- \
- VS_OUTPUT main( VS_INPUT In )\
- {\
- VS_OUTPUT Output;\
- float4 pos = In.Position;\
- pos = mul(RotY, pos);\
- pos = mul(RotX, pos);\
- pos = mul(RotZ, pos);\
- pos = mul(View, pos);\
- pos = mul(Projection, pos);\
- Output.Position = pos;\
- Output.Texture = In.Texture;\
- return Output;\
- }\
-";
-
static int Direct3D11MapPoolTexture(picture_t *picture)
{
picture_sys_t *p_sys = picture->p_sys;
More information about the vlc-commits
mailing list