summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--CMakeLists.txt16
-rw-r--r--cmake/CompileFXToH.cmake7
-rw-r--r--cmake/FindDirectX.cmake5
-rw-r--r--compiler/cmake/NvWaveWorks.cmake85
-rw-r--r--src/Entrypoints.cpp5
-rw-r--r--src/Quadtree.cpp2
7 files changed, 95 insertions, 26 deletions
diff --git a/.gitignore b/.gitignore
index ff7a5b1..1596534 100644
--- a/.gitignore
+++ b/.gitignore
@@ -42,3 +42,4 @@ test/gl2/win64/debug/cudart64_55.dll
*.app
compiler/vc12win64-cmake/
src/generated/
+bin/
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7116a55..9833f7d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -42,16 +42,20 @@ IF (NOT ${TARGET_BUILD_PLATFORM} IN_LIST PLATFORM_LIST)
ENDIF()
IF(TARGET_BUILD_PLATFORM STREQUAL "Windows")
- SET(CMAKE_CXX_FLAGS "/Wall /wd4514 /wd4820 /wd4127 /wd4710 /wd4711 /d2Zi+ /WX /W4 /GF /GS- /GR- /Gd /fp:fast")
+
+ #/GS /Gm /Od /MTd
+ #/GS- /Gy /Gm- /Ox /Ob2 /GF /Oy /MT /Ot
+
+ SET(CMAKE_CXX_FLAGS "/W4 /Zc:wchar_t /Zi /errorReport:prompt /Zc:forScope /fp:fast /WX- /GR- /Gd /openmp- /nologo")
- SET(CMAKE_CXX_FLAGS_DEBUG "/Od /MTd /RTCu")
- SET(CMAKE_CXX_FLAGS_CHECKED "/Ox /MT")
- SET(CMAKE_CXX_FLAGS_PROFILE "/Ox /MT")
- SET(CMAKE_CXX_FLAGS_RELEASE "/Ox /MT")
+ SET(CMAKE_CXX_FLAGS_DEBUG "/GS /Gm /Od /MTd")
+ SET(CMAKE_CXX_FLAGS_RELEASE "/GS- /Gy /Gm- /Ox /Ob2 /GF /Oy /MT /Ot")
IF(CMAKE_CL_64)
ADD_DEFINITIONS(-DWIN64)
- ENDIF(CMAKE_CL_64)
+ ENDIF(CMAKE_CL_64)
+
+ ADD_DEFINITIONS(-DUNICODE -D_UNICODE)
ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "PS4")
diff --git a/cmake/CompileFXToH.cmake b/cmake/CompileFXToH.cmake
index 02817e8..4839cba 100644
--- a/cmake/CompileFXToH.cmake
+++ b/cmake/CompileFXToH.cmake
@@ -1,16 +1,15 @@
-FUNCTION(CompileFXToH FILE OUTPUT_DIR TARGET INCLUDE_DIR INCLUDE_DIR2 ENTRYPOINT OPTIONS)
+FUNCTION(CompileFXToH FILE OUTPUT_FILE TARGET INCLUDE_DIR INCLUDE_DIR2 ENTRYPOINT OPTIONS)
GET_FILENAME_COMPONENT(FILE_WE ${FILE} NAME_WE)
# "/I${SHADER_SRC_DIR} /EGFSDK_WAVEWORKS_VERTEX_INPUT_Sig /Tvs_4_0 ${SHADER_SRC_DIR}\Quadtree_SM4_sig.fx /Fh ${WW_SOURCE_DIR}\generated\Quadtree_SM4_sig.h"
- ADD_CUSTOM_TARGET(${TARGET} ALL)
ADD_CUSTOM_COMMAND(
PRE_BUILD
# TARGET ${TARGET}
- OUTPUT ${OUTPUT_DIR}/${FILE_WE}.h
- COMMAND ${DirectX_FXC_EXECUTABLE} /I${INCLUDE_DIR} /I${INCLUDE_DIR2} /E${ENTRYPOINT} ${OPTIONS} ${FILE} /Fh ${OUTPUT_DIR}/${FILE_WE}.h
+ OUTPUT ${OUTPUT_FILE}
+ COMMAND ${DirectX_FXC_EXECUTABLE} /I${INCLUDE_DIR} /I${INCLUDE_DIR2} /E${ENTRYPOINT} ${OPTIONS} ${FILE} /Fh ${OUTPUT_FILE} ${ARGV7} ${ARGV8}
MAIN_DEPENDENCY ${FILE}
COMMENT "FXC Compile ${FILE}"
VERBATIM
diff --git a/cmake/FindDirectX.cmake b/cmake/FindDirectX.cmake
index 34dbdd8..33be604 100644
--- a/cmake/FindDirectX.cmake
+++ b/cmake/FindDirectX.cmake
@@ -75,6 +75,7 @@ if (WIN32)
# See also:
# - http://msdn.microsoft.com/en-us/library/windows/desktop/ee663275.aspx
if (DEFINED MSVC_VERSION AND NOT ${MSVC_VERSION} LESS 1700)
+ MESSAGE(Using WINSDK Headers)
set (USE_WINSDK_HEADERS TRUE)
endif ()
@@ -199,6 +200,7 @@ if (WIN32)
find_winsdk_header (D3D11 d3d11.h)
find_winsdk_library (D3D11 d3d11)
+ find_winsdk_library (DXGUID dxguid)
find_combined (D3D11 D3D11 D3D11)
find_winsdk_header (D3D11_1 d3d11_1.h)
find_combined (D3D11_1 D3D11_1 D3D11)
@@ -219,7 +221,8 @@ if (WIN32)
endif ()
find_program (DirectX_FXC_EXECUTABLE fxc
- HINTS ${DirectX_BIN_SEARCH_PATH}
+ HINTS "${ProgramFiles}/Windows Kits/8.1/bin/x86" "${ProgramFiles}/Windows Kits/8.0/bin/x86" ${DirectX_BIN_SEARCH_PATH}
+
DOC "Path to fxc.exe executable."
)
diff --git a/compiler/cmake/NvWaveWorks.cmake b/compiler/cmake/NvWaveWorks.cmake
index 387dc84..6ca3015 100644
--- a/compiler/cmake/NvWaveWorks.cmake
+++ b/compiler/cmake/NvWaveWorks.cmake
@@ -147,15 +147,75 @@ SET(CUDA_FILES
${WW_SOURCE_DIR}/FFT_Simulation_CUDA_kernel.cu
)
+SET(FX_FILES
+ ${SHADER_SRC_DIR}/Quadtree_SM4_sig.fx
+ ${SHADER_SRC_DIR}/Quadtree_SM5_sig.fx
+ ${SHADER_SRC_DIR}/FoamGeneration_SM4.fx
+ ${SHADER_SRC_DIR}/FoamGeneration_SM3.fx
+
+ ${WW_SOURCE_DIR}/FFT_Simulation_DirectCompute_shader.hlsl
+)
+
+SET(GENERATED_HLSL_FILES
+ ${GEN_SRC_DIR}/Quadtree_SM4_sig.h
+ ${GEN_SRC_DIR}/Quadtree_SM5_sig.h
+ ${GEN_SRC_DIR}/FoamGeneration_vs_4_0.h
+ ${GEN_SRC_DIR}/FoamGeneration_ps_4_0.h
+ ${GEN_SRC_DIR}/FoamGeneration_vs_3_0.h
+ ${GEN_SRC_DIR}/FoamGeneration_ps_3_0.h
+ ${GEN_SRC_DIR}/ComputeH0_cs_5_0.h
+ ${GEN_SRC_DIR}/ComputeRows_cs_5_0.h
+ ${GEN_SRC_DIR}/ComputeColumns_cs_5_0.h
+)
+
INCLUDE(cmake/CompileFXToH.cmake)
#ADD_CUSTOM_TARGET(fx ALL)
-#FUNCTION(CompileFXToH FILE OUTPUT_DIR TARGET INCLUDE_DIR ENTRYPOINT OPTIONS)
+#FUNCTION(CompileFXToH FILE OUTPUT_FILE TARGET INCLUDE_DIR ENTRYPOINT OPTIONS)
+
+# Compile the .fx files to .h files so they can be loaded easily.
+ADD_CUSTOM_TARGET(fx ALL)
+
+CompileFXToH(${SHADER_SRC_DIR}/Quadtree_SM4_sig.fx ${GEN_SRC_DIR}/Quadtree_SM4_sig.h fx ${SHADER_SRC_DIR} ${DISTRO_INCLUDE_DIR} GFSDK_WAVEWORKS_VERTEX_INPUT_Sig /Tvs_4_0)
+CompileFXToH(${SHADER_SRC_DIR}/Quadtree_SM5_sig.fx ${GEN_SRC_DIR}/Quadtree_SM5_sig.h fx ${SHADER_SRC_DIR} ${DISTRO_INCLUDE_DIR} GFSDK_WAVEWORKS_VERTEX_INPUT_Sig /Tvs_5_0)
+
+# NOTE: This does a weird thing. Only the PS command invocation will show in VS. The other one is there, but is in some sort of hidden file.
+# It can still be seen in the project xml.
+CompileFXToH(${SHADER_SRC_DIR}/FoamGeneration_SM4.fx ${GEN_SRC_DIR}/FoamGeneration_ps_4_0.h fx ${SHADER_SRC_DIR} ${GEN_SRC_DIR} ps /Tps_4_0)
+CompileFXToH(${SHADER_SRC_DIR}/FoamGeneration_SM4.fx ${GEN_SRC_DIR}/FoamGeneration_vs_4_0.h fx ${SHADER_SRC_DIR} ${GEN_SRC_DIR} vs /Tvs_4_0)
+
+CompileFXToH(${SHADER_SRC_DIR}/FoamGeneration_SM3.fx ${GEN_SRC_DIR}/FoamGeneration_ps_3_0.h fx ${SHADER_SRC_DIR} ${GEN_SRC_DIR} ps /Tps_3_0)
+CompileFXToH(${SHADER_SRC_DIR}/FoamGeneration_SM3.fx ${GEN_SRC_DIR}/FoamGeneration_vs_3_0.h fx ${SHADER_SRC_DIR} ${GEN_SRC_DIR} vs /Tvs_3_0)
+
+CompileFXToH(${SHADER_SRC_DIR}/CalcGradient_SM4.fx ${GEN_SRC_DIR}/CalcGradient_ps_4_0.h fx ${SHADER_SRC_DIR} ${GEN_SRC_DIR} ps /Tps_4_0)
+CompileFXToH(${SHADER_SRC_DIR}/CalcGradient_SM4.fx ${GEN_SRC_DIR}/CalcGradient_vs_4_0.h fx ${SHADER_SRC_DIR} ${GEN_SRC_DIR} vs /Tvs_4_0)
+
+CompileFXToH(${SHADER_SRC_DIR}/CalcGradient_SM3.fx ${GEN_SRC_DIR}/CalcGradient_ps_3_0.h fx ${SHADER_SRC_DIR} ${GEN_SRC_DIR} ps /Tps_3_0)
+CompileFXToH(${SHADER_SRC_DIR}/CalcGradient_SM3.fx ${GEN_SRC_DIR}/CalcGradient_vs_3_0.h fx ${SHADER_SRC_DIR} ${GEN_SRC_DIR} vs /Tvs_3_0)
-CompileFXToH(${SHADER_SRC_DIR}/Quadtree_SM4_sig.fx ${GEN_SRC_DIR} fx1 ${SHADER_SRC_DIR} ${DISTRO_INCLUDE_DIR} GFSDK_WAVEWORKS_VERTEX_INPUT_Sig /Tvs_4_0)
-CompileFXToH(${SHADER_SRC_DIR}/Quadtree_SM5_sig.fx ${GEN_SRC_DIR} fx2 ${SHADER_SRC_DIR} ${DISTRO_INCLUDE_DIR} GFSDK_WAVEWORKS_VERTEX_INPUT_Sig /Tvs_5_0)
+CompileFXToH(${WW_SOURCE_DIR}/FFT_Simulation_DirectCompute_shader.hlsl ${GEN_SRC_DIR}/ComputeH0_cs_5_0.h fx ${SHADER_SRC_DIR} ${GEN_SRC_DIR} ComputeH0 /Tcs_5_0 /Vng_ComputeH0)
+CompileFXToH(${WW_SOURCE_DIR}/FFT_Simulation_DirectCompute_shader.hlsl ${GEN_SRC_DIR}/ComputeRows_cs_5_0.h fx ${SHADER_SRC_DIR} ${GEN_SRC_DIR} ComputeRows /Tcs_5_0 /Vng_ComputeRows)
+CompileFXToH(${WW_SOURCE_DIR}/FFT_Simulation_DirectCompute_shader.hlsl ${GEN_SRC_DIR}/ComputeColumns_cs_5_0.h fx ${SHADER_SRC_DIR} ${GEN_SRC_DIR} ComputeColumns /Tcs_5_0 /Vng_ComputeColumns)
+
+
+# Now the CUDA file
+# CUDA!
+SET(CUDA_NVCC_FLAGS "-G -g -DWIN32 -D_WINDOWS -D_UNICODE -DUNICODE -D_LIB -gencode arch=compute_30,code=compute_30 -gencode arch=compute_20,code=sm_20")
+
+CUDA_INCLUDE_DIRECTORIES(
+ ${CUDA_INCLUDE_DIRS}
+)
+
+SET(CUDA_PROPAGATE_HOST_FLAGS OFF)
+
+SET(CUDA_NVCC_FLAGS_DEBUG "--compiler-options=/Zi,/W4,/nologo,/Od,/MTd")
+SET(CUDA_NVCC_FLAGS_RELEASE "-use_fast_math -DNDEBUG --compiler-options=/W4,/nologo,/O2,/GF,/GS-,/Gy,/fp:fast,/GR-,/MT")
+
+CUDA_COMPILE(GENERATED_CUDA_FILES_1
+ ${WW_SOURCE_DIR}/FFT_Simulation_CUDA_kernel.cu
+)
ADD_LIBRARY(WaveWorks ${WW_LIBTYPE}
${WW_PLATFORM_SRC_FILES}
@@ -164,18 +224,19 @@ ADD_LIBRARY(WaveWorks ${WW_LIBTYPE}
${H_FILES}
${DISTRO_INCLUDE_FILES}
- ${WW_SOURCE_DIR}/generated/Quadtree_SM4_sig.h
- ${SHADER_SRC_DIR}/Quadtree_SM4_sig.fx
-
- ${WW_SOURCE_DIR}/generated/Quadtree_SM5_sig.h
- ${SHADER_SRC_DIR}/Quadtree_SM5_sig.fx
-
+ ${FX_FILES}
+ ${GENERATED_HLSL_FILES}
+
+ ${GENERATED_CUDA_FILES_1}
+
# ${HLSL_FILES}
# ${CUDA_FILES}
)
SOURCE_GROUP("src" FILES ${CPP_FILES} ${H_FILES})
SOURCE_GROUP("include" FILES ${DISTRO_INCLUDE_FILES})
+SOURCE_GROUP("generated" FILES ${GENERATED_HLSL_FILES})
+SOURCE_GROUP("fx" FILES ${FX_FILES})
#SOURCE_GROUP("header" FILES ${H_FILES})
#SOURCE_GROUP("hlsl" FILES ${HLSL_FILES})
#SOURCE_GROUP("cuda" FILES ${CUDA_FILES})
@@ -206,7 +267,7 @@ TARGET_COMPILE_DEFINITIONS(WaveWorks
IF(TARGET_BUILD_PLATFORM STREQUAL "Windows")
# Add linked libraries
-# TARGET_LINK_LIBRARIES(WaveWorks PUBLIC ${NVTOOLSEXT_LIBRARIES} LowLevel LowLevelAABB LowLevelCloth LowLevelDynamics LowLevelParticles WaveWorksCommon WaveWorksGpu PxFoundation PxPvdSDK PxTask SceneQuery SimulationController)
+ TARGET_LINK_LIBRARIES(WaveWorks PUBLIC ${CUDA_LIBRARIES} ${DirectX_DXGUID_LIBRARY})
IF(CMAKE_CL_64)
SET(LIBPATH_SUFFIX "win64")
@@ -215,8 +276,8 @@ IF(TARGET_BUILD_PLATFORM STREQUAL "Windows")
ENDIF(CMAKE_CL_64)
SET_TARGET_PROPERTIES(WaveWorks PROPERTIES
- LINK_FLAGS_DEBUG "/DELAYLOAD:nvcuda.dll /MAP /DELAYLOAD:PxFoundationDEBUG_${LIBPATH_SUFFIX}.dll /DELAYLOAD:WaveWorks3CommonDEBUG_${LIBPATH_SUFFIX}.dll /DEBUG"
- LINK_FLAGS_RELEASE "/DELAYLOAD:nvcuda.dll /MAP /DELAYLOAD:WaveWorks3Common_${LIBPATH_SUFFIX}.dll /DELAYLOAD:PxFoundation_${LIBPATH_SUFFIX}.dll /INCREMENTAL:NO"
+ LINK_FLAGS_DEBUG "/MAP /DEBUG"
+ LINK_FLAGS_RELEASE "/MAP /INCREMENTAL:NO"
)
ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "PS4")
diff --git a/src/Entrypoints.cpp b/src/Entrypoints.cpp
index ad94648..996fe55 100644
--- a/src/Entrypoints.cpp
+++ b/src/Entrypoints.cpp
@@ -431,8 +431,9 @@ const char* GFSDK_WAVEWORKS_CALL_CONV GFSDK_WaveWorks_GetBuildString()
#elif defined(TARGET_PLATFORM_ANDROID)
return "ANDROID_TEST";
// TIMT: TODO!!!
-#else
- extern const char* kNVWaveWorks_build_string;
+#else
+ //TODO: Fix this build string thing.
+ const char* kNVWaveWorks_build_string = "FixBuildString!";
return kNVWaveWorks_build_string;
#endif
}
diff --git a/src/Quadtree.cpp b/src/Quadtree.cpp
index 2ee2d76..daa7d23 100644
--- a/src/Quadtree.cpp
+++ b/src/Quadtree.cpp
@@ -1169,7 +1169,7 @@ int GFSDK_WaveWorks_Quadtree::buildNodeList( QuadNode& quad_node,
// Estimate the min grid coverage
float min_coverage = estimateGridCoverage(quad_node, m_params, matProj, NumPixelsInViewport, eyePoint);
- float geomorphing_degree = max(0.f,min(m_params.geomorphing_degree,1.f));
+ //float geomorphing_degree = max(0.f,min(m_params.geomorphing_degree,1.f));
// Recursively attatch sub-nodes.
bool visible = true;