[vlc-devel] [PATCH v2 7/8] d3d11: use vlc_viewpoint_to_4x4 to generate view matrix

Alexandre Janniaux ajanni at videolabs.io
Wed Mar 6 16:31:37 CET 2019


---
 modules/video_output/win32/d3d11_shaders.c | 1 +
 modules/video_output/win32/d3d11_shaders.h | 1 +
 modules/video_output/win32/direct3d11.c    | 4 ++++
 3 files changed, 6 insertions(+)

diff --git a/modules/video_output/win32/d3d11_shaders.c b/modules/video_output/win32/d3d11_shaders.c
index fb621d2d39..a591e43854 100644
--- a/modules/video_output/win32/d3d11_shaders.c
+++ b/modules/video_output/win32/d3d11_shaders.c
@@ -169,6 +169,7 @@ cbuffer VS_PROJECTION_CONST : register(b0)\n\
    float4x4 RotX;\n\
    float4x4 RotY;\n\
    float4x4 RotZ;\n\
+   float4x4 View;\n\
    float4x4 Zoom;\n\
    float4x4 Projection;\n\
 };\n\
diff --git a/modules/video_output/win32/d3d11_shaders.h b/modules/video_output/win32/d3d11_shaders.h
index 3a84b99746..c7582972ce 100644
--- a/modules/video_output/win32/d3d11_shaders.h
+++ b/modules/video_output/win32/d3d11_shaders.h
@@ -69,6 +69,7 @@ typedef struct {
     FLOAT RotX[4*4];
     FLOAT RotY[4*4];
     FLOAT RotZ[4*4];
+    FLOAT View[4*4];
     FLOAT Zoom[4*4];
     FLOAT Projection[4*4];
 } VS_PROJECTION_CONST;
diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index c84e4e85d6..20236d2f0d 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -803,6 +803,10 @@ static void SetQuadVSProjection(vout_display_t *vd, d3d_quad_t *quad, const vlc_
         getZRotMatrix(f_roll,  dst_data->RotZ);
         getZoomMatrix(SPHERE_RADIUS * f_z, dst_data->Zoom);
         getProjectionMatrix(f_sar, f_fovy, dst_data->Projection);
+
+        vlc_viewpoint_t vp = *p_vp;
+        vlc_viewpoint_reverse(&vp);
+        vlc_viewpoint_to_4x4(&vp, dst_data->View);
     }
     ID3D11DeviceContext_Unmap(sys->d3d_dev.d3dcontext, (ID3D11Resource *)quad->pVertexShaderConstants, 0);
 #undef RAD
-- 
2.21.0



More information about the vlc-devel mailing list