summaryrefslogtreecommitdiff
path: root/test/d3d11/ocean_cufft_app.cpp
diff options
context:
space:
mode:
authorJason Maskell <[email protected]>2016-05-16 15:00:36 +0200
committerJason Maskell <[email protected]>2016-05-16 15:00:36 +0200
commit3eb017d032e0c542401ea202f7a62b7c7ddcd498 (patch)
tree6470077bdc344f1493778976917f7217a3159707 /test/d3d11/ocean_cufft_app.cpp
parentProject now compiles with Cmake. (diff)
downloadwaveworks_archive-3eb017d032e0c542401ea202f7a62b7c7ddcd498.tar.xz
waveworks_archive-3eb017d032e0c542401ea202f7a62b7c7ddcd498.zip
Added the test_d3d11 app to the solution. Not compiling yet, mostly a paranoia commit.
Diffstat (limited to 'test/d3d11/ocean_cufft_app.cpp')
-rw-r--r--test/d3d11/ocean_cufft_app.cpp148
1 files changed, 79 insertions, 69 deletions
diff --git a/test/d3d11/ocean_cufft_app.cpp b/test/d3d11/ocean_cufft_app.cpp
index f056cbd..af79315 100644
--- a/test/d3d11/ocean_cufft_app.cpp
+++ b/test/d3d11/ocean_cufft_app.cpp
@@ -44,6 +44,7 @@
#include "message_types.h"
#include <shlwapi.h>
#include <tchar.h>
+#include "DDSTextureLoader.h"
//#define DEBUG_VS // Uncomment this line to debug vertex shaders
@@ -52,7 +53,7 @@
// Disable warning "conditional expression is constant"
#pragma warning(disable:4127)
-extern HRESULT LoadFile(LPCTSTR FileName, ID3DXBuffer** ppBuffer);
+extern HRESULT LoadFile(LPCTSTR FileName, ID3DBlob** ppBuffer);
//--------------------------------------------------------------------------------------
@@ -182,7 +183,7 @@ const FLOAT kWaterScale = 50.f;
//--------------------------------------------------------------------------------------
// Forward declarations
//--------------------------------------------------------------------------------------
-bool CALLBACK IsD3D9DeviceAcceptable( D3DCAPS9* pCaps, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat, bool bWindowed, void* pUserContext );
+//bool CALLBACK IsD3D9DeviceAcceptable( D3DCAPS9* pCaps, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat, bool bWindowed, void* pUserContext );
bool CALLBACK IsD3D11DeviceAcceptable( const CD3D11EnumAdapterInfo *AdapterInfo, UINT Output, const CD3D11EnumDeviceInfo *DeviceInfo, DXGI_FORMAT BackBufferFormat, bool bWindowed, void* pUserContext );
bool CALLBACK ModifyDeviceSettings( DXUTDeviceSettings* pDeviceSettings, void* pUserContext );
HRESULT CALLBACK OnD3D11CreateDevice( ID3D11Device* pd3dDevice, const DXGI_SURFACE_DESC* pBackBufferSurfaceDesc, void* pUserContext );
@@ -266,7 +267,7 @@ INT WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR cmdline, int )
DXUTSetCallbackKeyboard( KeyboardProc );
DXUTSetCallbackFrameMove( OnFrameMove );
- DXUTSetCallbackD3D9DeviceAcceptable( IsD3D9DeviceAcceptable );
+// DXUTSetCallbackD3D9DeviceAcceptable( IsD3D9DeviceAcceptable );
DXUTSetCallbackD3D11DeviceAcceptable( IsD3D11DeviceAcceptable );
DXUTSetCallbackD3D11DeviceCreated( OnD3D11CreateDevice );
DXUTSetCallbackD3D11SwapChainResized( OnD3D11ResizedSwapChain );
@@ -322,7 +323,7 @@ void InitApp()
g_ocean_simulation_param.time_scale = 0.5f;
g_ocean_simulation_param.wave_amplitude = 1.0f;
- g_ocean_simulation_param.wind_dir = NvFromDX(D3DXVECTOR2(0.8f, 0.6f));
+ g_ocean_simulation_param.wind_dir = NvFromDX(XMFLOAT2(0.8f, 0.6f));
g_ocean_simulation_param.wind_speed = 9.0f;
g_ocean_simulation_param.wind_dependency = 0.98f;
g_ocean_simulation_param.choppy_scale = 1.f;
@@ -344,8 +345,8 @@ void InitApp()
g_ocean_simulation_settings.enable_gfx_timers = true;
g_ocean_simulation_settings.enable_CPU_timers = true;
- g_ocean_surface_param.sky_color = D3DXVECTOR4(0.38f, 0.45f, 0.56f, 0);
- g_ocean_surface_param.waterbody_color = D3DXVECTOR4(0.07f, 0.15f, 0.2f, 0);
+ g_ocean_surface_param.sky_color = XMFLOAT4(0.38f, 0.45f, 0.56f, 0);
+ g_ocean_surface_param.waterbody_color = XMFLOAT4(0.07f, 0.15f, 0.2f, 0);
g_ocean_surface_param.sky_blending = 100.0f;
memset(&g_ocean_stats_simulation_filtered, 0, sizeof(g_ocean_stats_simulation_filtered));
@@ -441,11 +442,11 @@ void AddGUISet()
// Called during device initialization, this code checks the device for some
// minimum set of capabilities, and rejects those that don't pass by returning E_FAIL.
//--------------------------------------------------------------------------------------
-bool CALLBACK IsD3D9DeviceAcceptable( D3DCAPS9* pCaps, D3DFORMAT AdapterFormat,
- D3DFORMAT BackBufferFormat, bool bWindowed, void* pUserContext )
-{
- return false;
-}
+// bool CALLBACK IsD3D9DeviceAcceptable( D3DCAPS9* pCaps, D3DFORMAT AdapterFormat,
+// D3DFORMAT BackBufferFormat, bool bWindowed, void* pUserContext )
+// {
+// return false;
+// }
bool CALLBACK IsD3D11DeviceAcceptable(const CD3D11EnumAdapterInfo *AdapterInfo, UINT Output, const CD3D11EnumDeviceInfo *DeviceInfo,
DXGI_FORMAT BackBufferFormat, bool bWindowed, void* pUserContext )
@@ -529,8 +530,8 @@ HRESULT CALLBACK OnD3D11CreateDevice( ID3D11Device* pd3dDevice, const DXGI_SURFA
//D3DXVECTOR3 vecEye(1358.16f, 441.017f, -1558.43f);
//D3DXVECTOR3 vecAt (881.419f, 340.248f, -1670.25f);
- D3DXVECTOR3 vecEye(0.f, 1210.534f, 0.f);
- D3DXVECTOR3 vecAt (4490.944f, 0.f, -3000.f);
+ XMVECTOR vecEye = DirectX::XMVectorSet(0.f, 1210.534f, 0.f, 0.f);
+ XMVECTOR vecAt = DirectX::XMVectorSet(4490.944f, 0.f, -3000.f, 0.f);
//D3DXVECTOR3 vecEye(1511.21f, 559.553f, -1164.19f);//(1691.43f, 503.88f, -1382.71f);
//D3DXVECTOR3 vecAt (1821.63f, 429.548f, -1533.82f);
@@ -540,7 +541,7 @@ HRESULT CALLBACK OnD3D11CreateDevice( ID3D11Device* pd3dDevice, const DXGI_SURFA
//D3DXVECTOR3 vecAt (1732.75f, 429.646f, -1875.57f);
//D3DXVECTOR3 vecEye(-1700, 1200, 1700);
//D3DXVECTOR3 vecAt (-200, 0, 200);
- g_Camera.SetViewParams(&vecEye, &vecAt);
+ g_Camera.SetViewParams(vecEye, vecAt);
GFSDK_WaveWorks_Malloc_Hooks malloHooks;
malloHooks.pMalloc = myMalloc;
@@ -575,7 +576,7 @@ HRESULT CALLBACK OnD3D11CreateDevice( ID3D11Device* pd3dDevice, const DXGI_SURFA
{
TCHAR path[MAX_PATH];
V_RETURN(DXUTFindDXSDKMediaFileCch(path, MAX_PATH, TEXT("..\\Media\\skybox_d3d11.fxo")));
- ID3DXBuffer* pEffectBuffer = NULL;
+ ID3DBlob* pEffectBuffer = NULL;
V_RETURN(LoadFile(path, &pEffectBuffer));
V_RETURN(D3DX11CreateEffectFromMemory(pEffectBuffer->GetBufferPointer(), pEffectBuffer->GetBufferSize(), 0, pd3dDevice, &g_pSkyboxFX));
pEffectBuffer->Release();
@@ -602,17 +603,18 @@ HRESULT CALLBACK OnD3D11CreateDevice( ID3D11Device* pd3dDevice, const DXGI_SURFA
TCHAR path[MAX_PATH];
V_RETURN(DXUTFindDXSDKMediaFileCch(path, MAX_PATH, TEXT("..\\Media\\sky_cube.dds")));
ID3D11Resource* pD3D11Resource = NULL;
- V_RETURN(D3DX11CreateTextureFromFile(pd3dDevice, path, NULL, NULL, &pD3D11Resource, NULL));
- V_RETURN(pd3dDevice->CreateShaderResourceView(pD3D11Resource, NULL, &g_pSkyCubeMap));
- V_RETURN(DXUTFindDXSDKMediaFileCch(path, MAX_PATH, TEXT("..\\Media\\nvidia_logo.dds")));
+ V_RETURN(DirectX::CreateDDSTextureFromFile(pd3dDevice, static_cast<const wchar_t *>(path), &pD3D11Resource, &g_pSkyCubeMap));
+// V_RETURN(pd3dDevice->CreateShaderResourceView(pD3D11Resource, NULL, &g_pSkyCubeMap));
SAFE_RELEASE(pD3D11Resource);
- V_RETURN(D3DX11CreateTextureFromFile(pd3dDevice, path, NULL, NULL, &pD3D11Resource, NULL));
- V_RETURN(pd3dDevice->CreateShaderResourceView(pD3D11Resource, NULL, &g_pLogoTex));
+
+ V_RETURN(DXUTFindDXSDKMediaFileCch(path, MAX_PATH, TEXT("..\\Media\\nvidia_logo.dds")));
+ V_RETURN(DirectX::CreateDDSTextureFromFile(pd3dDevice, static_cast<const wchar_t *>(path), &pD3D11Resource, &g_pLogoTex));
+// V_RETURN(pd3dDevice->CreateShaderResourceView(pD3D11Resource, NULL, &g_pLogoTex));
SAFE_RELEASE(pD3D11Resource);
{
D3D11_BUFFER_DESC vBufferDesc;
- vBufferDesc.ByteWidth = 4 * sizeof(D3DXVECTOR4);
+ vBufferDesc.ByteWidth = 4 * sizeof(XMFLOAT4);
vBufferDesc.Usage = D3D11_USAGE_DYNAMIC;
vBufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
vBufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
@@ -624,7 +626,7 @@ HRESULT CALLBACK OnD3D11CreateDevice( ID3D11Device* pd3dDevice, const DXGI_SURFA
{
TCHAR path[MAX_PATH];
V_RETURN(DXUTFindDXSDKMediaFileCch(path, MAX_PATH, TEXT("..\\Media\\ocean_marker_d3d11.fxo")))
- ID3DXBuffer* pEffectBuffer = NULL;
+ ID3DBlob* pEffectBuffer = NULL;
V_RETURN(LoadFile(path, &pEffectBuffer));
V_RETURN(D3DX11CreateEffectFromMemory(pEffectBuffer->GetBufferPointer(), pEffectBuffer->GetBufferSize(), 0, pd3dDevice, &g_pMarkerFX));
pEffectBuffer->Release();
@@ -648,7 +650,7 @@ HRESULT CALLBACK OnD3D11CreateDevice( ID3D11Device* pd3dDevice, const DXGI_SURFA
{
D3D11_BUFFER_DESC vBufferDesc;
- vBufferDesc.ByteWidth = 5 * sizeof(D3DXVECTOR4);
+ vBufferDesc.ByteWidth = 5 * sizeof(XMFLOAT4);
vBufferDesc.Usage = D3D11_USAGE_DYNAMIC;
vBufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
vBufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
@@ -690,7 +692,7 @@ HRESULT CALLBACK OnD3D11ResizedSwapChain( ID3D11Device* pd3dDevice, IDXGISwapCha
// Setup the camera's projection parameters
float fAspectRatio = pBackBufferSurfaceDesc->Width / (FLOAT)pBackBufferSurfaceDesc->Height;
- g_Camera.SetProjParams(D3DX_PI/4, fAspectRatio, g_NearPlane, g_FarPlane);
+ g_Camera.SetProjParams(DirectX::XMVectorGetX(g_XMPi/4), fAspectRatio, g_NearPlane, g_FarPlane);
//g_Camera.SetWindow(pBackBufferSurfaceDesc->Width, pBackBufferSurfaceDesc->Height);
// UI
@@ -901,8 +903,8 @@ void CALLBACK OnD3D11FrameRender( ID3D11Device* pd3dDevice, ID3D11DeviceContext*
if(g_RenderWater)
{
- const D3DXMATRIX matView = D3DXMATRIX(kWaterScale,0,0,0,0,0,kWaterScale,0,0,kWaterScale,0,0,0,0,0,1) * *g_Camera.GetViewMatrix();
- const D3DXMATRIX matProj = *g_Camera.GetProjMatrix();
+ const XMMATRIX matView = XMMATRIX(kWaterScale, 0, 0, 0, 0, 0, kWaterScale, 0, 0, kWaterScale, 0, 0, 0, 0, 0, 1) *g_Camera.GetViewMatrix();
+ const XMMATRIX matProj = g_Camera.GetProjMatrix();
if (g_RenderWireframe)
g_pOceanSurf->renderWireframe(pDC, matView,matProj,g_hOceanSimulation, g_hOceanSavestate, g_DebugCam);
@@ -939,7 +941,7 @@ void CALLBACK OnD3D11FrameRender( ID3D11Device* pd3dDevice, ID3D11DeviceContext*
wchar_t* buf = new wchar_t[len];
MultiByteToWideChar(CP_ACP, 0, g_pTestParams->ScreenshotDirectory.c_str(), slength, buf, len);
- DXUTSnapD3D11Screenshot( buf, D3DX11_IFF_BMP );
+ DXUTSnapD3D11Screenshot( buf, false );
delete[] buf;
DXUTShutdown();
@@ -956,7 +958,7 @@ void RenderText( double fTime )
// Output statistics
g_pTxtHelper->Begin();
g_pTxtHelper->SetInsertionPos( 2, 0 );
- g_pTxtHelper->SetForegroundColor( D3DXCOLOR( 0.9f, 0.9f, 0.9f, 1.0f ) );
+ g_pTxtHelper->SetForegroundColor(XMFLOAT4(0.9f, 0.9f, 0.9f, 1.0f));
g_pTxtHelper->DrawTextLine( DXUTGetFrameStats(true) );
g_pTxtHelper->DrawTextLine( DXUTGetDeviceStats() );
@@ -965,14 +967,14 @@ void RenderText( double fTime )
swprintf_s(buffer, buffer_len, L"Quad patches drawn: %d\n", g_ocean_stats_quadtree.num_patches_drawn);
g_pTxtHelper->DrawTextLine(buffer);
- g_pTxtHelper->SetForegroundColor( D3DXCOLOR( 1.0f, 1.0f, 1.0f, 1.0f ) );
+ g_pTxtHelper->SetForegroundColor( XMFLOAT4( 1.0f, 1.0f, 1.0f, 1.0f ) );
// Draw help
if( g_bShowHelp )
{
const DXGI_SURFACE_DESC* pd3dsdBackBuffer = DXUTGetDXGIBackBufferSurfaceDesc();
g_pTxtHelper->SetInsertionPos( 2, pd3dsdBackBuffer->Height-15*6 );
- g_pTxtHelper->SetForegroundColor( D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f ) );
+ g_pTxtHelper->SetForegroundColor(XMFLOAT4(1.0f, 1.0f, 1.0f, 1.0f));
g_pTxtHelper->DrawTextLine( L"Controls:" );
g_pTxtHelper->SetInsertionPos( 20, pd3dsdBackBuffer->Height-15*5 );
@@ -985,7 +987,7 @@ void RenderText( double fTime )
}
else
{
- g_pTxtHelper->SetForegroundColor( D3DXCOLOR( 1.0f, 1.0f, 1.0f, 1.0f ) );
+ g_pTxtHelper->SetForegroundColor(XMFLOAT4(1.0f, 1.0f, 1.0f, 1.0f));
g_pTxtHelper->DrawTextLine( L"Press F1 for help" );
swprintf_s(buffer,buffer_len,L" GPU_gfx_time : %3.3f msec",g_ocean_stats_simulation_filtered.GPU_gfx_time);
g_pTxtHelper->DrawTextLine(buffer);
@@ -1085,11 +1087,11 @@ void CALLBACK KeyboardProc( UINT nChar, bool bKeyDown, bool bAltDown, void* pUse
GFSDK_WaveWorks_Quadtree_SetFrustumCullMargin(g_pOceanSurf->m_hOceanQuadTree, GFSDK_WaveWorks_Simulation_GetConservativeMaxDisplacementEstimate(g_hOceanSimulation));
break;
case VK_OEM_COMMA:
- g_ocean_param_quadtree.mesh_dim = max(g_ocean_param_quadtree.mesh_dim >> 1, 4);
+ g_ocean_param_quadtree.mesh_dim = std::max(g_ocean_param_quadtree.mesh_dim >> 1, 4);
g_pOceanSurf->initQuadTree(g_ocean_param_quadtree);
break;
case VK_OEM_PERIOD:
- g_ocean_param_quadtree.mesh_dim = min(g_ocean_param_quadtree.mesh_dim << 1, 256);
+ g_ocean_param_quadtree.mesh_dim = std::min(g_ocean_param_quadtree.mesh_dim << 1, 256);
g_pOceanSurf->initQuadTree(g_ocean_param_quadtree);
break;
case 'c':
@@ -1320,40 +1322,42 @@ void CALLBACK OnD3D11DestroyDevice( void* pUserContext )
SAFE_DELETE(g_pTxtHelper);
}
-void RenderMarkers(ID3D11DeviceContext* pDC, const gfsdk_float4* pMarkerPositions, int num_markers, const D3DXVECTOR4& color)
+void RenderMarkers(ID3D11DeviceContext* pDC, const gfsdk_float4* pMarkerPositions, int num_markers, const XMFLOAT4& color)
{
g_pMarkerColor->SetFloatVector((FLOAT*)&color);
const UINT vbOffset = 0;
- const UINT vertexStride = sizeof(D3DXVECTOR4);
+ const UINT vertexStride = sizeof(XMFLOAT4);
pDC->IASetInputLayout(g_pMarkerLayout);
pDC->IASetVertexBuffers(0, 1, &g_pMarkerVB, &vertexStride, &vbOffset);
pDC->IASetIndexBuffer(g_pMarkerIB, DXGI_FORMAT_R16_UINT, 0);
pDC->IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
- D3DXMATRIX matView = /*D3DXMATRIX(1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1) **/ *g_Camera.GetViewMatrix();
- D3DXMATRIX matProj = *g_Camera.GetProjMatrix();
- D3DXMATRIX matVP = matView * matProj;
+ XMMATRIX matView = /*D3DXMATRIX(1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1) **/ g_Camera.GetViewMatrix();
+ XMMATRIX matProj = g_Camera.GetProjMatrix();
+ XMMATRIX matVP = matView * matProj;
g_pMarkerMatViewProjVariable->SetMatrix((FLOAT*)&matVP);
g_pMarkerTechnique->GetPassByIndex(0)->Apply(0,pDC);
for(int i = 0; i != num_markers; ++i)
{
- D3DXVECTOR4 transformedMarkerPosition = D3DXVECTOR4(pMarkerPositions[i].x,pMarkerPositions[i].z + g_ocean_param_quadtree.sea_level,pMarkerPositions[i].y,1.f);
- transformedMarkerPosition.x *= kWaterScale;
- transformedMarkerPosition.y *= kWaterScale;
- transformedMarkerPosition.z *= kWaterScale;
+ XMVECTOR transformedMarkerPosition = DirectX::XMVectorSet(pMarkerPositions[i].x, pMarkerPositions[i].z + g_ocean_param_quadtree.sea_level, pMarkerPositions[i].y, 1.f) * kWaterScale;
+ DirectX::XMVectorSetW(transformedMarkerPosition, 1.0f);
+// transformedMarkerPosition.x *= kWaterScale;
+// transformedMarkerPosition.y *= kWaterScale;
+// transformedMarkerPosition.z *= kWaterScale;
D3D11_MAPPED_SUBRESOURCE msr;
pDC->Map(g_pMarkerVB, 0, D3D11_MAP_WRITE_DISCARD, 0, &msr);
- D3DXVECTOR4* marker_verts = (D3DXVECTOR4*)msr.pData;
+ XMFLOAT4* marker_verts = (XMFLOAT4*)msr.pData;
+
+ DirectX::XMStoreFloat4(&marker_verts[0], transformedMarkerPosition);
+ DirectX::XMStoreFloat4(&marker_verts[1], transformedMarkerPosition + DirectX::XMVectorSet(20.f, 20.f, 20.f, 0.f));
+ DirectX::XMStoreFloat4(&marker_verts[2], transformedMarkerPosition + DirectX::XMVectorSet(20.f, 20.f, -20.f, 0.f));
+ DirectX::XMStoreFloat4(&marker_verts[3], transformedMarkerPosition + DirectX::XMVectorSet(-20.f, 20.f, -20.f, 0.f));
+ DirectX::XMStoreFloat4(&marker_verts[4], transformedMarkerPosition + DirectX::XMVectorSet(-20.f, 20.f, 20.f, 0.f));
- marker_verts[0] = transformedMarkerPosition;
- marker_verts[1] = transformedMarkerPosition + D3DXVECTOR4( 20.f, 20.f, 20.f, 0.f);
- marker_verts[2] = transformedMarkerPosition + D3DXVECTOR4( 20.f, 20.f,-20.f, 0.f);
- marker_verts[3] = transformedMarkerPosition + D3DXVECTOR4(-20.f, 20.f,-20.f, 0.f);
- marker_verts[4] = transformedMarkerPosition + D3DXVECTOR4(-20.f, 20.f, 20.f, 0.f);
pDC->Unmap(g_pMarkerVB, 0);
pDC->DrawIndexed(12, 0, 0);
@@ -1368,7 +1372,7 @@ gfsdk_float4 g_local_marker_positions[NumMarkers];
void RenderLocalMarkers(ID3D11DeviceContext* pDC)
{
- RenderMarkers(pDC, g_local_marker_positions, NumMarkers, D3DXVECTOR4(1.f,0.f,0.f,1.f));
+ RenderMarkers(pDC, g_local_marker_positions, NumMarkers, XMFLOAT4(1.f, 0.f, 0.f, 1.f));
}
void RenderRemoteMarkers(ID3D11DeviceContext* pDC)
@@ -1377,7 +1381,7 @@ void RenderRemoteMarkers(ID3D11DeviceContext* pDC)
const gfsdk_float4* pMarkerPositions = NULL;
size_t numMarkers = 0;
if(g_pNetworkClient->GetRemoteMarkerPositions(pMarkerPositions, numMarkers)) {
- RenderMarkers(pDC, pMarkerPositions, (int)numMarkers, D3DXVECTOR4(1.f,1.f,0.f,1.f));
+ RenderMarkers(pDC, pMarkerPositions, (int)numMarkers, XMFLOAT4(1.f, 1.f, 0.f, 1.f));
}
}
}
@@ -1392,19 +1396,23 @@ void UpdateMarkers()
HRESULT hr;
// Find where the camera vector intersects mean sea level
- D3DXVECTOR3 eye_pos = *g_Camera.GetEyePt();
- D3DXVECTOR3 lookat_pos = *g_Camera.GetLookAtPt();
+ XMVECTOR eye_pos = g_Camera.GetEyePt();
+ XMVECTOR lookat_pos = g_Camera.GetLookAtPt();
const FLOAT intersectionHeight = g_ocean_param_quadtree.sea_level;
- const FLOAT lambda = (intersectionHeight - eye_pos.y)/(lookat_pos.y - eye_pos.y);
- const D3DXVECTOR3 sea_level_pos = (1.f - lambda) * eye_pos + lambda * lookat_pos;
- const D3DXVECTOR2 sea_level_xy(sea_level_pos.x, sea_level_pos.z);
+ const FLOAT lambda = (intersectionHeight - XMVectorGetY(eye_pos))/(XMVectorGetY(lookat_pos) - XMVectorGetY(eye_pos));
+ const XMVECTOR sea_level_pos = (1.f - lambda) * eye_pos + lambda * lookat_pos;
+ const XMVECTOR sea_level_xy = XMVectorSet(XMVectorGetX(sea_level_pos), XMVectorGetZ(sea_level_pos), 0, 0);
// Update local marker coords, we could need them any time for remote
for(int x = 0; x != NumMarkersXY; ++x)
{
for(int y = 0; y != NumMarkersXY; ++y)
{
- g_local_marker_coords[y * NumMarkersXY + x] = NvFromDX(sea_level_xy/kWaterScale + D3DXVECTOR2(2.f * (x-((NumMarkersXY-1)/2)), 2.f * (y-((NumMarkersXY-1)/2))));
+ XMVECTOR offset = XMVectorSet(2.f * (x - ((NumMarkersXY - 1) / 2)), 2.f * (y - ((NumMarkersXY - 1) / 2)), 0, 0);
+ XMVECTOR newPos = sea_level_xy / kWaterScale + offset;
+
+ g_local_marker_coords[y * NumMarkersXY + x].x = XMVectorGetX(newPos);
+ g_local_marker_coords[y * NumMarkersXY + x].x = XMVectorGetY(newPos);
}
}
@@ -1439,32 +1447,34 @@ void UpdateMarkers()
void RenderSkybox(ID3D11DeviceContext* pDC)
{
- D3DXMATRIX matView = D3DXMATRIX(1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1) * *g_Camera.GetViewMatrix();
- D3DXMATRIX matProj = *g_Camera.GetProjMatrix();
- D3DXMATRIX matVP = matView * matProj;
+ XMMATRIX matView = XMMATRIX(1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1) * g_Camera.GetViewMatrix();
+ XMMATRIX matProj = g_Camera.GetProjMatrix();
+ XMMATRIX matVP = matView * matProj;
D3D11_MAPPED_SUBRESOURCE msr;
pDC->Map(g_pSkyBoxVB, 0, D3D11_MAP_WRITE_DISCARD, 0, &msr);
- D3DXVECTOR4* far_plane_quad = (D3DXVECTOR4*)msr.pData;
- far_plane_quad[0] = D3DXVECTOR4(-g_FarPlane, g_FarPlane, g_FarPlane * 0.999f, g_FarPlane);
- far_plane_quad[1] = D3DXVECTOR4(-g_FarPlane, -g_FarPlane, g_FarPlane * 0.999f, g_FarPlane);
- far_plane_quad[2] = D3DXVECTOR4( g_FarPlane, g_FarPlane, g_FarPlane * 0.999f, g_FarPlane);
- far_plane_quad[3] = D3DXVECTOR4( g_FarPlane, -g_FarPlane, g_FarPlane * 0.999f, g_FarPlane);
- D3DXMATRIX matInvVP;
- D3DXMatrixInverse(&matInvVP, NULL, &matVP);
- D3DXVec4TransformArray(&far_plane_quad[0], sizeof(D3DXVECTOR4), &far_plane_quad[0], sizeof(D3DXVECTOR4), &matInvVP, 4);
+ XMFLOAT4* far_plane_quad = (XMFLOAT4*)msr.pData;
+ far_plane_quad[0] = XMFLOAT4(-g_FarPlane, g_FarPlane, g_FarPlane * 0.999f, g_FarPlane);
+ far_plane_quad[1] = XMFLOAT4(-g_FarPlane, -g_FarPlane, g_FarPlane * 0.999f, g_FarPlane);
+ far_plane_quad[2] = XMFLOAT4(g_FarPlane, g_FarPlane, g_FarPlane * 0.999f, g_FarPlane);
+ far_plane_quad[3] = XMFLOAT4(g_FarPlane, -g_FarPlane, g_FarPlane * 0.999f, g_FarPlane);
+
+ //NOTE: Need Determinant!
+ XMMATRIX matInvVP = XMMatrixInverse(&DirectX::XMVectorSet(0, 0, 0, 0), matVP);
+
+ XMVector4TransformStream(&far_plane_quad[0], sizeof(XMFLOAT4), &far_plane_quad[0], sizeof(XMFLOAT4), 4, matInvVP);
pDC->Unmap(g_pSkyBoxVB, 0);
const UINT vbOffset = 0;
- const UINT vertexStride = sizeof(D3DXVECTOR4);
+ const UINT vertexStride = sizeof(XMFLOAT4);
pDC->IASetInputLayout(g_pSkyboxLayout);
pDC->IASetVertexBuffers(0, 1, &g_pSkyBoxVB, &vertexStride, &vbOffset);
pDC->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
g_pSkyBoxMatViewProjVariable->SetMatrix((FLOAT*)&matVP);
- D3DXVECTOR3 eye_pos = *g_Camera.GetEyePt();
+ XMVECTOR eye_pos = g_Camera.GetEyePt();
g_pSkyBoxEyePosVariable->SetFloatVector((FLOAT*)&eye_pos);
g_pSkyBoxSkyCubeMapVariable->SetResource(g_pSkyCubeMap);