diff --git a/PROJ1_WIN/565Pathtracer.sln b/PROJ1_WIN/565Pathtracer.sln index 5cc5973..fe3d47c 100755 --- a/PROJ1_WIN/565Pathtracer.sln +++ b/PROJ1_WIN/565Pathtracer.sln @@ -1,32 +1,30 @@  Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "565Pathtracer", "565Pathtracer\565Pathtracer.vcxproj", "{FF21CA49-522E-4E86-B508-EE515B248FC4}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "565Pathtracer", "565Pathtracer\565Raytracer.vcxproj", "{FF21CA49-522E-4E86-B508-EE515B248FC4}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug (v4.0)|Win32 = Debug (v4.0)|Win32 - Debug (v4.0)|x64 = Debug (v4.0)|x64 Debug (v5.5)|Win32 = Debug (v5.5)|Win32 - Debug (v5.5)|x64 = Debug (v5.5)|x64 - Release (v4.0)|Win32 = Release (v4.0)|Win32 - Release (v4.0)|x64 = Release (v4.0)|x64 + Debug(v4.0)|Win32 = Debug(v4.0)|Win32 + Debug(v5.0)|Win32 = Debug(v5.0)|Win32 + Debug|Win32 = Debug|Win32 Release (v5.5)|Win32 = Release (v5.5)|Win32 - Release (v5.5)|x64 = Release (v5.5)|x64 + Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v4.0)|Win32.ActiveCfg = Debug|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v4.0)|Win32.Build.0 = Debug|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v4.0)|x64.ActiveCfg = Debug|Win32 {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v5.5)|Win32.ActiveCfg = Debug (v5.5)|Win32 {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v5.5)|Win32.Build.0 = Debug (v5.5)|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v5.5)|x64.ActiveCfg = Debug (v5.5)|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v4.0)|Win32.ActiveCfg = Release|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v4.0)|Win32.Build.0 = Release|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v4.0)|x64.ActiveCfg = Release|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug(v4.0)|Win32.ActiveCfg = Debug|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug(v4.0)|Win32.Build.0 = Debug|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug(v5.0)|Win32.ActiveCfg = Debug (v5.5)|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug(v5.0)|Win32.Build.0 = Debug (v5.5)|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug|Win32.ActiveCfg = Debug|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug|Win32.Build.0 = Debug|Win32 {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v5.5)|Win32.ActiveCfg = Release (v5.5)|Win32 {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v5.5)|Win32.Build.0 = Release (v5.5)|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v5.5)|x64.ActiveCfg = Release (v5.5)|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release|Win32.ActiveCfg = Release|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/PROJ1_WIN/565Pathtracer.suo b/PROJ1_WIN/565Pathtracer.suo new file mode 100644 index 0000000..5da8fb4 Binary files /dev/null and b/PROJ1_WIN/565Pathtracer.suo differ diff --git a/PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj b/PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj index 4515c57..0bce96b 100755 --- a/PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj +++ b/PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj @@ -75,7 +75,7 @@ - + @@ -146,6 +146,9 @@ $(ProjectDir)$(Platform)/$(Configuration)/%(Filename)%(Extension).obj C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc;../shared/glew/includes;../shared/freeglut/includes + compute_30,sm_30 + true + true @@ -196,10 +199,13 @@ $(ProjectDir)$(Platform)/$(Configuration)/%(Filename)%(Extension).obj C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc;../shared/glew/includes;../shared/freeglut/includes + compute_30,sm_30 + true + true - + - + \ No newline at end of file diff --git a/PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj.yuqin.nvuser b/PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj.yuqin.nvuser new file mode 100644 index 0000000..a1d069c --- /dev/null +++ b/PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj.yuqin.nvuser @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/PROJ1_WIN/565Pathtracer/565Raytracer.filters b/PROJ1_WIN/565Pathtracer/565Raytracer.filters new file mode 100644 index 0000000..9c1f97f --- /dev/null +++ b/PROJ1_WIN/565Pathtracer/565Raytracer.filters @@ -0,0 +1,41 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + \ No newline at end of file diff --git a/PROJ1_WIN/565Pathtracer/565Raytracer.user b/PROJ1_WIN/565Pathtracer/565Raytracer.user new file mode 100644 index 0000000..ace9a86 --- /dev/null +++ b/PROJ1_WIN/565Pathtracer/565Raytracer.user @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/PROJ1_WIN/565Pathtracer/565Raytracer.vcxproj b/PROJ1_WIN/565Pathtracer/565Raytracer.vcxproj new file mode 100644 index 0000000..563520e --- /dev/null +++ b/PROJ1_WIN/565Pathtracer/565Raytracer.vcxproj @@ -0,0 +1,215 @@ + + + + + Debug (v5.5) + Win32 + + + Debug + Win32 + + + Release (v5.5) + Win32 + + + Release + Win32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + Document + true + true + compute_20,sm_20 + + + + {FF21CA49-522E-4E86-B508-EE515B248FC4} + Win32Proj + 565Pathtracer + 565Pathtracer + + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + false + true + Unicode + + + Application + false + true + Unicode + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include;C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\common\inc;../shared/glew/include;../shared/freeglut/include;%(AdditionalIncludeDirectories) + + + Console + true + ../shared/glew/lib;../shared/freeglut/lib;%(AdditionalLibraryDirectories) + cudart.lib; glew32.lib;glu32.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + mainCRTStartup + + + + + $(ProjectDir)$(Platform)/$(Configuration)/%(Filename)%(Extension).obj + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include;C:/ProgramData/NVIDIA Corporation/NVIDIA GPU Computing SDK 4.0/C/common/inc;../shared/glew/includes;../shared/freeglut/includes + compute_10,sm_10 + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.5\common\inc;../shared/glew/include;../shared/freeglut/include;../shared/glfw/include;%(AdditionalIncludeDirectories) + + + Console + true + ../shared/glew/lib;../shared/freeglut/lib;%(AdditionalLibraryDirectories) + cudart.lib; glew32.lib;glu32.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + mainCRTStartup + + + + + $(ProjectDir)$(Platform)/$(Configuration)/%(Filename)%(Extension).obj + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc;../shared/glew/includes;../shared/freeglut/includes + compute_30,sm_30 + true + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include;C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\common\inc;../shared/glew/include;../shared/freeglut/include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + ../shared/glew/lib;../shared/freeglut/lib;%(AdditionalLibraryDirectories) + cudart.lib; glew32.lib;glu32.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + mainCRTStartup + + + $(ProjectDir)$(Platform)/$(Configuration)/%(Filename)%(Extension).obj + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include;C:/ProgramData/NVIDIA Corporation/NVIDIA GPU Computing SDK 4.0/C/common/inc;../shared/glew/includes;../shared/freeglut/includes + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.5\common\inc;../shared/glew/include;../shared/freeglut/include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + ../shared/glew/lib;../shared/freeglut/lib;%(AdditionalLibraryDirectories) + cudart.lib; glew32.lib;glu32.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + mainCRTStartup + + + $(ProjectDir)$(Platform)/$(Configuration)/%(Filename)%(Extension).obj + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc;../shared/glew/includes;../shared/freeglut/includes + compute_30,sm_30 + + + + + + + \ No newline at end of file diff --git a/PROJ1_WIN/565Pathtracer/565Raytracer.vcxproj.filters b/PROJ1_WIN/565Pathtracer/565Raytracer.vcxproj.filters new file mode 100644 index 0000000..e07e07f --- /dev/null +++ b/PROJ1_WIN/565Pathtracer/565Raytracer.vcxproj.filters @@ -0,0 +1,42 @@ + + + + + + + + + + stb_image + + + stb_image + + + + + + + + + + + + + + + stb_image + + + stb_image + + + + + {011aa553-95e8-4e59-b7ff-1bb89aebe21d} + + + + + + \ No newline at end of file diff --git a/PROJ1_WIN/565Pathtracer/565Raytracer.vcxproj.user b/PROJ1_WIN/565Pathtracer/565Raytracer.vcxproj.user new file mode 100644 index 0000000..9973347 --- /dev/null +++ b/PROJ1_WIN/565Pathtracer/565Raytracer.vcxproj.user @@ -0,0 +1,19 @@ + + + + scene=../../scenes/sampleScene.txt + WindowsLocalDebugger + + + scene=../../scenes/sampleScene.txt + WindowsLocalDebugger + + + scene=../../scenes/sampleScene.txt + WindowsLocalDebugger + + + scene=../../scenes/sampleScene.txt + WindowsLocalDebugger + + \ No newline at end of file diff --git a/PROJ1_WIN/565Pathtracer/565Raytracer.vcxproj.yuqin.nvuser b/PROJ1_WIN/565Pathtracer/565Raytracer.vcxproj.yuqin.nvuser new file mode 100644 index 0000000..a1d069c --- /dev/null +++ b/PROJ1_WIN/565Pathtracer/565Raytracer.vcxproj.yuqin.nvuser @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/PROJ1_WIN/565Pathtracer/8000.DOF.bmp b/PROJ1_WIN/565Pathtracer/8000.DOF.bmp new file mode 100644 index 0000000..7035076 Binary files /dev/null and b/PROJ1_WIN/565Pathtracer/8000.DOF.bmp differ diff --git a/PROJ1_WIN/565Pathtracer/Win32/Debug (v5.5)/raytraceKernel.cu.obj b/PROJ1_WIN/565Pathtracer/Win32/Debug (v5.5)/raytraceKernel.cu.obj new file mode 100644 index 0000000..5509efc Binary files /dev/null and b/PROJ1_WIN/565Pathtracer/Win32/Debug (v5.5)/raytraceKernel.cu.obj differ diff --git a/PROJ1_WIN/565Pathtracer/Win32/Debug/raytraceKernel.cu.obj b/PROJ1_WIN/565Pathtracer/Win32/Debug/raytraceKernel.cu.obj new file mode 100644 index 0000000..ac21fce Binary files /dev/null and b/PROJ1_WIN/565Pathtracer/Win32/Debug/raytraceKernel.cu.obj differ diff --git a/PROJ1_WIN/565Pathtracer/Win32/Release (v5.5)/raytraceKernel.cu.obj b/PROJ1_WIN/565Pathtracer/Win32/Release (v5.5)/raytraceKernel.cu.obj new file mode 100644 index 0000000..09eae4b Binary files /dev/null and b/PROJ1_WIN/565Pathtracer/Win32/Release (v5.5)/raytraceKernel.cu.obj differ diff --git a/PROJ1_WIN/565Pathtracer/pathTracer.0.bmp b/PROJ1_WIN/565Pathtracer/pathTracer.0.bmp new file mode 100644 index 0000000..5988a01 Binary files /dev/null and b/PROJ1_WIN/565Pathtracer/pathTracer.0.bmp differ diff --git a/PROJ1_WIN/565Pathtracer/vc100.pdb b/PROJ1_WIN/565Pathtracer/vc100.pdb new file mode 100644 index 0000000..be33446 Binary files /dev/null and b/PROJ1_WIN/565Pathtracer/vc100.pdb differ diff --git a/PROJ1_WIN/src/raytraceKernel.cu.deps b/PROJ1_WIN/src/raytraceKernel.cu.deps new file mode 100644 index 0000000..025f5d9 --- /dev/null +++ b/PROJ1_WIN/src/raytraceKernel.cu.deps @@ -0,0 +1,1207 @@ +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda_runtime.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_config.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\sal.h +c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\vadefs.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\limits.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stddef.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\channel_descriptor.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\cuda_runtime_api.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\cuda_device_runtime_api.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\cuda_runtime_api.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\common_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\time.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\wtime.inl +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\time.inl +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\math_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\math.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdlib.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cmath +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\yvals.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\use_ansi.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\math.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdlib +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\cuda_surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\channel_descriptor.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\cuda_texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\channel_descriptor.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_11_atomic_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_12_atomic_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_13_double_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_20_atomic_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_32_atomic_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_35_atomic_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_32_atomic_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_20_intrinsics.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_30_intrinsics.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_32_intrinsics.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_35_intrinsics.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_32_intrinsics.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\cuda_surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_fetch_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\cuda_texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_indirect_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_indirect_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_launch_parameters.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdio.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\swprintf.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda.h +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\sceneStructs.h +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm/glm.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core/_fixes.hpp +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\climits +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cfloat +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\float.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtwrn.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\limits +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ymath.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\wchar.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xstddef +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstddef +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core/setup.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\./core/_detail.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\setup.hpp +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cassert +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\assert.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\./core/type.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_half.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_half.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\_detail.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_float.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_half.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\setup.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_int.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\setup.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\_detail.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_gentype.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_size.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_vec1.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_vec.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_gentype.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_float.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_int.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_size.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\_swizzle.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\_swizzle_func.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_vec1.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_vec2.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_vec.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_float.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_int.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_size.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\_swizzle.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_vec2.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_vec3.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_vec.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_float.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_int.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_size.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\_swizzle.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_vec3.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_vec4.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_vec.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_float.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_int.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_size.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\_swizzle.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_vec4.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat2x2.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_gentype.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat2x2.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat2x3.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat2x3.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat2x4.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat2x4.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat3x2.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat3x2.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat3x3.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat3x3.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat3x4.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat3x4.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat4x2.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat4x2.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat4x3.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat4x3.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat4x4.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\type_mat4x4.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\./core/func_trigonometric.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\func_trigonometric.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\_vectorize.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\./core/func_exponential.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\func_exponential.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\_vectorize.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\./core/func_common.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\_fixes.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\func_common.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\_vectorize.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\./core/func_packing.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\func_packing.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\./core/func_geometric.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\func_geometric.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\_vectorize.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\./core/func_matrix.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\func_matrix.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\_vectorize.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\./core/func_vector_relational.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\_detail.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\func_vector_relational.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\./core/func_integer.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\func_integer.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\_vectorize.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\./core/func_noise.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core\func_noise.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\./core/_swizzle.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\cudaMat4.h +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm/glm.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core/_fixes.hpp +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda_runtime.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda_runtime.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\istream +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ios +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xlocnum +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\streambuf +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xiosbase +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xlocale +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdexcept +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\exception +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\eh.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\malloc.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xstring +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\new +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iosfwd +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdbg.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\type_traits +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xtr1common +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxtype_traits +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxtype_traits +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxtype_traits +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxtype_traits +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxtype_traits +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxtype_traits +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxtype_traits +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxtype_traits +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxtype_traits +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxtype_traits +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxtype_traits +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\typeinfo +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xlocinfo +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xlocinfo.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ctype.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\locale.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xdebug +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\system_error +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cerrno +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\errno.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\share.h +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\utilities.h +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm/glm.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core/_fixes.hpp +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\algorithm +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\memory +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\setjmp.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\immintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\wmmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\nmmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\smmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\tmmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\pmmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\emmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\mmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ammintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\mm3dnow.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\mmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxshared +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iterator +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\sstream +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\vector +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfunctional +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\cudaMat4.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/host_vector.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/config.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/simple_defines.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/compiler.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/host_system.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/device_system.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/host_device.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\host_defines.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/debug.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/compiler_fence.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/forceinline.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/vector_base.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/normal_iterator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/iterator_adaptor.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/iterator_facade.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/type_traits.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/type_traits/has_trivial_assign.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/iterator_facade_category.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/host_system_tag.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/tag.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/device_system_tag.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/tag.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/any_system_tag.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/iterator_categories.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/universal_categories.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/iterator_traversal_tags.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/is_iterator_category.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/iterator_category_to_traversal.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/iterator_category_to_system.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/distance_from_result.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/use_default.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/iterator_adaptor_base.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/iterator_traits.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/iterator_traits.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/is_trivial_iterator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/type_traits/pointer_traits.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/type_traits/is_metafunction_defined.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/type_traits/has_nested_type.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/reverse_iterator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/reverse_iterator_base.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/reverse_iterator.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/contiguous_storage.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/contiguous_storage.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/swap.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/vector_base.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/copy.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/select_system.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/minimum_system.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/type_traits/minimum_type.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/type_traits.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/tag.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/copy.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/functional.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\functional +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xrefwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallobj +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallobj +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallobj +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallobj +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallobj +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallobj +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallobj +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallobj +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallobj +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallobj +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallobj +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxpmfcaller +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxpmfcaller +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxpmfcaller +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxpmfcaller +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxpmfcaller +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxpmfcaller +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxpmfcaller +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxpmfcaller +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxpmfcaller +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxpmfcaller +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxpmfcaller +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallpmf +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallpmf +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallpmf +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallpmf +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallpmf +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallpmf +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallpmf +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallpmf +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallpmf +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallpmf +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallpmf +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallfun +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallfun +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallfun +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallfun +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallfun +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallfun +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallfun +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallfun +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallfun +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallfun +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallfun +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xawrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxcallwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxrefwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxrefwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxrefwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxrefwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxrefwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxrefwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxrefwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxrefwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxrefwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxrefwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxrefwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxmem_fn +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxmem_fn +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxmem_fn +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxmem_fn +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxmem_fn +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxmem_fn +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxmem_fn +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxmem_fn +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxmem_fn +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxmem_fn +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxfunction +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxfunction +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxfunction +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxfunction +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxfunction +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxfunction +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxfunction +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxfunction +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxfunction +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxfunction +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxfunction +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xawrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind0 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind0 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind0 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind0 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind0 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind0 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind0 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind0 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind0 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind0 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind0 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xfwrap1 +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxbind1 +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional/placeholder.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional/actor.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/tuple.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/tuple.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/pair.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/pair.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional/value.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional/composite.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional/operators/assignment_operator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional/operators/operator_adaptors.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/type_traits/result_of.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/type_traits/function_traits.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional/actor.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional/argument.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional/operators.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional/operators/arithmetic_operators.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional/operators/relational_operators.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional/operators/logical_operators.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional/operators/bitwise_operators.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional/operators/compound_assignment_operators.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/functional/operators/comma_operator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/internal_functional.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/transform.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/transform.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/transform.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/transform.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/for_each.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/for_each.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/for_each.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/static_assert.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/adl_helper.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/memory.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/memory.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/pointer.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/reference_forward_declaration.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/pointer.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/reference.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/reference.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/memory.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/memory.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/malloc_and_free_adl_helper.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/malloc_and_free.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/raw_pointer_cast.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/malloc_and_free.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/guarded_cuda_runtime_api.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda_runtime_api.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/system_error.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/error_code.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/errno.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/error_category.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/error_code.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/error_condition.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/system_error.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/error.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\driver_types.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/error.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/bad_alloc.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/raw_reference_cast.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/tuple_of_iterator_references.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/raw_reference_cast.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/tuple_transform.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/tuple_meta_transform.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/allocator/malloc_allocator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/allocator/tagged_allocator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/allocator/tagged_allocator.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/allocator/malloc_allocator.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/memory.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/algorithm.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/adjacent_difference.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/adjacent_difference.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/binary_search.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/binary_search.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/advance.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/advance.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/advance.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/advance.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/distance.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/distance.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/distance.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/distance.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/function.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/copy.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/dispatch/is_trivial_copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/general_copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/trivial_copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/extrema.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/extrema.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/find.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/find.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/for_each.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/for_each.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/merge.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/merge.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/merge.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/partition.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/partition.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/temporary_array.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/retag.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/retag.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/tagged_iterator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/allocator/temporary_allocator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/allocator/temporary_allocator.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/allocator/no_throw_allocator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/temporary_array.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/reduce.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/reduce.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/reduce_by_key.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/reduce_by_key.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/type_traits/algorithm/intermediate_type_from_function_and_iterators.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/type_traits/iterator/is_output_iterator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/any_assign.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/remove.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/remove.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/scan.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/scan.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/scan_by_key.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/scan_by_key.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/set_operations.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/set_operations.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/sort.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/sort.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/sort.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/reverse.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/reverse.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/reverse.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/reverse.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/swap.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/swap.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/swap_ranges.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/swap_ranges.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/swap_ranges.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/zip_iterator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/zip_iterator_base.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/minimum_category.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/zip_iterator.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/stable_merge_sort.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/stable_merge_sort.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/insertion_sort.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/copy_backward.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/stable_radix_sort.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/stable_radix_sort.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/copy_if.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/copy_if.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/copy_if.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/copy_if.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/scan.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/scan.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/scan.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/scan.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/scan_by_key.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/scan_by_key.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/replace.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/replace.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/replace.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/replace.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/scatter.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/scatter.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/scatter.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/scatter.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/permutation_iterator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/permutation_iterator_base.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/cstdint.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/unique.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/unique.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cpp/detail/unique_by_key.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/scalar/unique_by_key.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/memory.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/memory.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/memory.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/algorithm.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/for_each.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/for_each.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/minmax.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/launch_closure.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/arch.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/arch.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system_error.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/util/blocking.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/launch_closure.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/synchronize.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/synchronize.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/launch_calculator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/launch_calculator.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/copy.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/copy_device_to_device.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/copy_device_to_device.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/copy_cross_system.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/copy_cross_system.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/trivial_copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/trivial_copy.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/trivial_copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/trivial_copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/reduce.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/reduce.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/extern_shared_ptr.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/block/reduce.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/scan.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/scan.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/fast_scan.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\thrust\system\cuda\detail\detail\fast_scan.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/reduce_intervals.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/reduce_intervals.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/internal/decompose.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/default_decomposition.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/default_decomposition.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/sort.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/sort.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/stable_merge_sort.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/stable_merge_sort.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/device_ptr.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/memory.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/device_ptr.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/device_reference.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/device_reference.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/mpl/math.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/block/merging_sort.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/stable_radix_sort.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/stable_radix_sort.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/gather.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/gather.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/gather.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/gather.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/sequence.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/sequence.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/sequence.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/sequence.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/counting_iterator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/counting_iterator.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/numeric_traits.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/util/align.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/b40c/radixsort_api.h +C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\math.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\thrust\system\cuda\detail\detail\b40c\radixsort_reduction_kernel.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\thrust\system\cuda\detail\detail\b40c\radixsort_kernel_common.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\thrust\system\cuda\detail\detail\b40c\kernel_utils.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\thrust\system\cuda\detail\detail\b40c\vector_types.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\thrust\system\cuda\detail\detail\b40c\radixsort_key_conversion.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\thrust\system\cuda\detail\detail\b40c\radixsort_spine_kernel.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\thrust\system\cuda\detail\detail\b40c\radixsort_scanscatter_kernel.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/trivial_sequence.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/adjacent_difference.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/adjacent_difference.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/transform_iterator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/transform_iterator.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/copy_if.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/copy_if.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/block/inclusive_scan.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/fill.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/fill.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/generate.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/generate.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/generate.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/generate.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/extrema.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/extrema.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/extrema.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/extrema.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/reduce.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/reduce.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/reduce.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/reduce.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/reduce_by_key.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/reduce_by_key.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/transform_reduce.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/transform_reduce.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/transform_reduce.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/transform_reduce.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/merge.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/merge.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/block/copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/block/merge.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/block/merge.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/scalar/binary_search.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/scalar/binary_search.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/get_set_operation_splitter_ranks.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/get_set_operation_splitter_ranks.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/scalar/select.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/scalar/select.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/binary_search.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/binary_search.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/binary_search.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/binary_search.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/reduce_by_key.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/reduce_by_key.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/type_traits/iterator/is_discard_iterator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/discard_iterator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/iterator/detail/discard_iterator_base.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/set_operations.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/set_difference.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/block/set_difference.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/block/set_difference.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/split_for_set_operation.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/split_for_set_operation.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/rank_iterator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/set_operation.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/detail/set_operation.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/set_intersection.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/block/set_intersection.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/block/set_intersection.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/set_symmetric_difference.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/block/set_symmetric_difference.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/block/set_symmetric_difference.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/set_union.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/block/set_union.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/cuda/detail/block/set_union.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/overlapped_copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/equal.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/equal.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/equal.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/equal.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/mismatch.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/mismatch.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/mismatch.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/mismatch.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/find.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/find.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/find.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/find.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/uninitialized_fill.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/uninitialized_fill.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/uninitialized_fill.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/uninitialized_fill.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/fill.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/fill.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/fill.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/uninitialized_copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/uninitialized_copy.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/uninitialized_copy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/uninitialized_copy.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/destroy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/dispatch/destroy.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/host_vector.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/device_vector.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/device_malloc_allocator.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/device_malloc.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/device_malloc.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/device_free.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/device_free.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/device_vector.inl +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm/glm.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core/_fixes.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\utilities.h +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\raytraceKernel.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/discard_block_engine.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/random_core_access.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/discard_block_engine.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/linear_congruential_engine.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/linear_congruential_engine_discard.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/mod.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/linear_congruential_engine.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/linear_feedback_shift_engine.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/linear_feedback_shift_engine_wordmask.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/linear_feedback_shift_engine.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/subtract_with_carry_engine.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/subtract_with_carry_engine.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/xor_combine_engine.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/xor_combine_engine_max.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/xor_combine_engine.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/uniform_int_distribution.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/integer_traits.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/uniform_int_distribution.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/uniform_real_distribution.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/uniform_real_distribution.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/normal_distribution.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/normal_distribution.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda.h +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\sceneStructs.h +C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc\helper_math.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda_runtime.h +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\intersections.h +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\sceneStructs.h +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\cudaMat4.h +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm/glm.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\glm\core/_fixes.hpp +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\utilities.h +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\interactions.h +d:\a_upenn\2013fall\cis565\projects2013\project2-pathtracer\src\intersections.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/remove.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/remove.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/remove.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/system/detail/generic/remove.inl +C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc\helper_math.h diff --git a/README.md b/README.md index 324bd3e..b175eae 100755 --- a/README.md +++ b/README.md @@ -1,133 +1,47 @@ ------------------------------------------------------------------------------- CIS565: Project 2: CUDA Pathtracer ------------------------------------------------------------------------------- -Fall 2013 +Yuqin Shao ------------------------------------------------------------------------------- -Due Wednesday, 10/02/13 -------------------------------------------------------------------------------- - -------------------------------------------------------------------------------- -NOTE: -------------------------------------------------------------------------------- -This project requires an NVIDIA graphics card with CUDA capability! Any card after the Geforce 8xxx series will work. If you do not have an NVIDIA graphics card in the machine you are working on, feel free to use any machine in the SIG Lab or in Moore100 labs. All machines in the SIG Lab and Moore100 are equipped with CUDA capable NVIDIA graphics cards. If this too proves to be a problem, please contact Patrick or Liam as soon as possible. - -------------------------------------------------------------------------------- -INTRODUCTION: -------------------------------------------------------------------------------- -In this project, you will extend your raytracer from Project 1 into a full CUDA based global illumination pathtracer. - -For this project, you may either choose to continue working off of your codebase from Project 1, or you may choose to use the included basecode in this repository. The basecode for Project 2 is the same as the basecode for Project 1, but with some missing components you will need filled in, such as the intersection testing and camera raycasting methods. - -How you choose to extend your raytracer into a pathtracer is a fairly open-ended problem; the supplied basecode is meant to serve as one possible set of guidelines for doing so, but you may choose any approach you want in your actual implementation, including completely scrapping the provided basecode in favor of your own from-scratch solution. - -------------------------------------------------------------------------------- -CONTENTS: -------------------------------------------------------------------------------- -The Project2 root directory contains the following subdirectories: - -* src/ contains the source code for the project. Both the Windows Visual Studio solution and the OSX makefile reference this folder for all source; the base source code compiles on OSX and Windows without modification. -* scenes/ contains an example scene description file. -* renders/ contains two example renders: the raytraced render from Project 1 (GI_no.bmp), and the same scene rendered with global illumination (GI_yes.bmp). -* PROJ1_WIN/ contains a Windows Visual Studio 2010 project and all dependencies needed for building and running on Windows 7. -* PROJ1_OSX/ contains a OSX makefile, run script, and all dependencies needed for building and running on Mac OSX 10.8. -* PROJ1_NIX/ contains a Linux makefile for building and running on Ubuntu - 12.04 LTS. Note that you will need to set the following environment - variables: - - - PATH=$PATH:/usr/local/cuda-5.5/bin - - LD_LIBRARY_PATH=/usr/local/cuda-5.5/lib64:/lib - -The projects build and run exactly the same way as in Project0 and Project1. ------------------------------------------------------------------------------- -REQUIREMENTS: +Features ------------------------------------------------------------------------------- -In this project, you are given code for: - -* All of the basecode from Project 1, plus: -* Intersection testing code for spheres and cubes -* Code for raycasting from the camera - -You will need to implement the following features. A number of these required features you may have already implemented in Project 1. If you have, you are ahead of the curve and have less work to do! - * Full global illumination (including soft shadows, color bleeding, etc.) by pathtracing rays through the scene. * Properly accumulating emittance and colors to generate a final image * Supersampled antialiasing * Parallelization by ray instead of by pixel via stream compaction (you may use Thrust for this). * Perfect specular reflection - -You are also required to implement at least two of the following features. Some of these features you may have already implemented in Project 1. If you have, you may NOT resubmit those features and instead must pick two new ones to implement. - -* From scratch stream compaction (no Thrust). -* Additional BRDF models, such as Cook-Torrance, Ward, etc. Each BRDF model may count as a separate feature. -* Texture mapping -* Bump mapping -* Translational motion blur -* Fresnel-based Refraction, i.e. glass -* OBJ Mesh loading and rendering without KD-Tree +* Fresnel-based Refraction * Interactive camera -* Integrate an existing stackless KD-Tree library, such as CUKD (https://github.com/unvirtual/cukd) * Depth of field -Alternatively, implementing just one of the following features can satisfy the "pick two" feature requirement, since these are correspondingly more difficult problems: - -* Physically based subsurface scattering and transmission -* Implement and integrate your own stackless KD-Tree from scratch. -* Displacement mapping -* Deformational motion blur - -As yet another alternative, if you have a feature or features you really want to implement that are not on this list, let us know, and we'll probably say yes! - -------------------------------------------------------------------------------- -NOTES ON GLM: +------------------------------------------------------------------------------ +Video Demo ------------------------------------------------------------------------------- -This project uses GLM, the GL Math library, for linear algebra. You need to know two important points on how GLM is used in this project: - -* In this project, indices in GLM vectors (such as vec3, vec4), are accessed via swizzling. So, instead of v[0], v.x is used, and instead of v[1], v.y is used, and so on and so forth. -* GLM Matrix operations work fine on NVIDIA Fermi cards and later, but pre-Fermi cards do not play nice with GLM matrices. As such, in this project, GLM matrices are replaced with a custom matrix struct, called a cudaMat4, found in cudaMat4.h. A custom function for multiplying glm::vec4s and cudaMat4s is provided as multiplyMV() in intersections.h. +http://youtu.be/0hghD1Zi7qU ------------------------------------------------------------------------------- -README +Screen Shots ------------------------------------------------------------------------------- -All students must replace or augment the contents of this Readme.md in a clear -manner with the following: +*With depth of field, refraction, reflection,8000 iterations, 10 max bounce depth +![Alt test](/renders/8000.DOF.bmp "") -* A brief description of the project and the specific features you implemented. -* At least one screenshot of your project running. -* A 30 second or longer video of your project running. To create the video you - can use http://www.microsoft.com/expression/products/Encoder4_Overview.aspx -* A performance evaluation (described in detail below). +*With depth of field, refraction,reflection,6000 iterations, 10 max bounce depth +![Alt test](/renders/pathTracer.DOF2.6000.bmp " ") -------------------------------------------------------------------------------- -PERFORMANCE EVALUATION -------------------------------------------------------------------------------- -The performance evaluation is where you will investigate how to make your CUDA -programs more efficient using the skills you've learned in class. You must have -performed at least one experiment on your code to investigate the positive or -negative effects on performance. - -One such experiment would be to investigate the performance increase involved -with adding a spatial data-structure to your scene data. - -Another idea could be looking at the change in timing between various block -sizes. +*No DOF, 3000 iterations, refraction,reflection,3000 iterations, 10 max bounce depth +![Alt test](/renders/pathTracer.refraction.10.3000.bmp " ") -A good metric to track would be number of rays per second, or frames per -second, or number of objects displayable at 60fps. - -We encourage you to get creative with your tweaks. Consider places in your code -that could be considered bottlenecks and try to improve them. - -Each student should provide no more than a one page summary of their -optimizations along with tables and or graphs to visually explain any -performance differences. +*No DOF, refraction, 500 iterations, 5 max bounce depth +![Alt test](/renders/pathTracer.refraction.5.500.bmp " ") +*Strange bug, bug disappears after I removed the sphere +![Alt test](/renders/FirstImage.JPG "") ------------------------------------------------------------------------------- -THIRD PARTY CODE POLICY +PERFORMANCE EVALUATION ------------------------------------------------------------------------------- -* Use of any third-party code must be approved by asking on the Google group. If it is approved, all students are welcome to use it. Generally, we approve use of third-party code that is not a core part of the project. For example, for the ray tracer, we would approve using a third-party library for loading models, but would not approve copying and pasting a CUDA function for doing refraction. -* Third-party code must be credited in README.md. -* Using third-party code without its approval, including using another student's code, is an academic integrity violation, and will result in you receiving an F for the semester. +![Alt test](evaluation.jpg "") ------------------------------------------------------------------------------- SELF-GRADING diff --git a/evaluation.jpg b/evaluation.jpg new file mode 100644 index 0000000..d855f13 Binary files /dev/null and b/evaluation.jpg differ diff --git a/renders/8000.DOF.bmp b/renders/8000.DOF.bmp new file mode 100644 index 0000000..7035076 Binary files /dev/null and b/renders/8000.DOF.bmp differ diff --git a/renders/FirstImage.JPG b/renders/FirstImage.JPG new file mode 100644 index 0000000..7231ff2 Binary files /dev/null and b/renders/FirstImage.JPG differ diff --git a/renders/pathTracer.6000.DOF.bmp b/renders/pathTracer.6000.DOF.bmp new file mode 100644 index 0000000..8bd5cac Binary files /dev/null and b/renders/pathTracer.6000.DOF.bmp differ diff --git a/renders/pathTracer.DOF2.6000.bmp b/renders/pathTracer.DOF2.6000.bmp new file mode 100644 index 0000000..56744c7 Binary files /dev/null and b/renders/pathTracer.DOF2.6000.bmp differ diff --git a/renders/pathTracer.diffuse.300.bmp b/renders/pathTracer.diffuse.300.bmp new file mode 100644 index 0000000..fc4dc9a Binary files /dev/null and b/renders/pathTracer.diffuse.300.bmp differ diff --git a/renders/pathTracer.diffuse.500.bmp b/renders/pathTracer.diffuse.500.bmp new file mode 100644 index 0000000..677dc86 Binary files /dev/null and b/renders/pathTracer.diffuse.500.bmp differ diff --git a/renders/pathTracer.mirror.500.bmp b/renders/pathTracer.mirror.500.bmp new file mode 100644 index 0000000..b89b34c Binary files /dev/null and b/renders/pathTracer.mirror.500.bmp differ diff --git a/renders/pathTracer.refraction.10.1500.bmp b/renders/pathTracer.refraction.10.1500.bmp new file mode 100644 index 0000000..bc5e22b Binary files /dev/null and b/renders/pathTracer.refraction.10.1500.bmp differ diff --git a/renders/pathTracer.refraction.10.3000.bmp b/renders/pathTracer.refraction.10.3000.bmp new file mode 100644 index 0000000..c283d89 Binary files /dev/null and b/renders/pathTracer.refraction.10.3000.bmp differ diff --git a/renders/pathTracer.refraction.5.1500.bmp b/renders/pathTracer.refraction.5.1500.bmp new file mode 100644 index 0000000..c32ee30 Binary files /dev/null and b/renders/pathTracer.refraction.5.1500.bmp differ diff --git a/renders/pathTracer.refraction.5.500.bmp b/renders/pathTracer.refraction.5.500.bmp new file mode 100644 index 0000000..7e760f5 Binary files /dev/null and b/renders/pathTracer.refraction.5.500.bmp differ diff --git a/renders/pathTracer.scene.300.bmp b/renders/pathTracer.scene.300.bmp new file mode 100644 index 0000000..aca26c8 Binary files /dev/null and b/renders/pathTracer.scene.300.bmp differ diff --git a/scenes/sampleScene.txt b/scenes/sampleScene.txt index 52d079e..64b5ce8 100755 --- a/scenes/sampleScene.txt +++ b/scenes/sampleScene.txt @@ -1,8 +1,8 @@ MATERIAL 0 //white diffuse -RGB 0.9 0.9 0.9 +RGB 1 1 1 SPECEX 0 SPECRGB 1 1 1 -REFL 0 +REFL 0 REFR 0 REFRIOR 0 SCATTER 0 @@ -35,24 +35,24 @@ RSCTCOEFF 0 EMITTANCE 0 MATERIAL 3 //red glossy -RGB .63 .26 .24 -SPECEX 0 +RGB 0 1 0 +SPECEX 0 SPECRGB 1 1 1 REFL 0 REFR 0 -REFRIOR 2 +REFRIOR 0 SCATTER 0 ABSCOEFF 0 0 0 RSCTCOEFF 0 EMITTANCE 0 MATERIAL 4 //white glossy -RGB 1 1 1 +RGB 0 1 1 SPECEX 0 SPECRGB 1 1 1 -REFL 0 +REFL 0 REFR 0 -REFRIOR 2 +REFRIOR 0 SCATTER 0 ABSCOEFF 0 0 0 RSCTCOEFF 0 @@ -70,13 +70,13 @@ ABSCOEFF .02 5.1 5.7 RSCTCOEFF 13 EMITTANCE 0 -MATERIAL 6 //green glossy -RGB .35 .48 .29 -SPECEX 0 +MATERIAL 6 //blue glossy +RGB 0.1 0.1 0.8 +SPECEX 0 SPECRGB 1 1 1 -REFL 0 -REFR 0 -REFRIOR 2.6 +REFL 0 +REFR 0.6 +REFRIOR 1.6 SCATTER 0 ABSCOEFF 0 0 0 RSCTCOEFF 0 @@ -92,7 +92,7 @@ REFRIOR 0 SCATTER 0 ABSCOEFF 0 0 0 RSCTCOEFF 0 -EMITTANCE 1 +EMITTANCE 5 MATERIAL 8 //light RGB 1 1 1 @@ -104,21 +104,42 @@ REFRIOR 0 SCATTER 0 ABSCOEFF 0 0 0 RSCTCOEFF 0 -EMITTANCE 15 +EMITTANCE 5 + +MATERIAL 9 //mirror +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +REFL 1.0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 10 //mirror +RGB 0 1 1 +SPECEX 0 +SPECRGB 0 0 0 +REFL 1.0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 CAMERA RES 800 800 FOVY 25 -ITERATIONS 5000 -FILE test.bmp +ITERATIONS 8000 +FILE pathTracer1.bmp frame 0 EYE 0 4.5 12 VIEW 0 0 -1 UP 0 1 0 -frame 1 -EYE 0 4.5 12 -VIEW 0 0 -1 -UP 0 1 0 + OBJECT 0 cube @@ -127,22 +148,14 @@ frame 0 TRANS 0 0 0 ROTAT 0 0 90 SCALE .01 10 10 -frame 1 -TRANS 0 0 0 -ROTAT 0 0 90 -SCALE .01 10 10 OBJECT 1 cube -material 0 +material 9 frame 0 TRANS 0 5 -5 ROTAT 0 90 0 -SCALE .01 10 10 -frame 1 -TRANS 0 5 -5 -ROTAT 0 90 0 -SCALE .01 10 10 +SCALE .01 10 10 OBJECT 2 cube @@ -151,10 +164,6 @@ frame 0 TRANS 0 10 0 ROTAT 0 0 90 SCALE .01 10 10 -frame 1 -TRANS 0 10 0 -ROTAT 0 0 90 -SCALE .01 10 10 OBJECT 3 cube @@ -163,10 +172,7 @@ frame 0 TRANS -5 5 0 ROTAT 0 0 0 SCALE .01 10 10 -frame 1 -TRANS -5 5 0 -ROTAT 0 0 0 -SCALE .01 10 10 + OBJECT 4 cube @@ -175,32 +181,20 @@ frame 0 TRANS 5 5 0 ROTAT 0 0 0 SCALE .01 10 10 -frame 1 -TRANS 5 5 0 -ROTAT 0 0 0 -SCALE .01 10 10 OBJECT 5 sphere material 4 frame 0 -TRANS 0 2 0 -ROTAT 0 180 0 -SCALE 3 3 3 -frame 1 -TRANS 0 2 0 +TRANS 1 2 -.5 ROTAT 0 180 0 SCALE 3 3 3 OBJECT 6 sphere -material 3 +material 5 frame 0 -TRANS 2 5 2 -ROTAT 0 180 0 -SCALE 2.5 2.5 2.5 -frame 1 -TRANS 2 5 2 +TRANS 2 6 2 ROTAT 0 180 0 SCALE 2.5 2.5 2.5 @@ -208,22 +202,31 @@ OBJECT 7 sphere material 6 frame 0 -TRANS -2 5 -2 -ROTAT 0 180 0 -SCALE 3 3 3 -frame 1 -TRANS -2 5 -2 +TRANS -2 4 -3 ROTAT 0 180 0 SCALE 3 3 3 OBJECT 8 cube -material 8 +material 10 +frame 0 +TRANS -3 0 2 +ROTAT 0 55 0 +SCALE 1 2 1 + + +OBJECT 9 +sphere +material 10 +frame 0 +TRANS -1 0.5 2 +ROTAT 0 0 0 +SCALE 1 1 1 + +OBJECT 10 +cube +material 7 frame 0 -TRANS 0 10 0 -ROTAT 0 0 90 -SCALE .3 3 3 -frame 1 TRANS 0 10 0 ROTAT 0 0 90 SCALE .3 3 3 diff --git a/src/glm/core/func_common.hpp b/src/glm/core/func_common.hpp index 4a696e3..a9d6acb 100755 --- a/src/glm/core/func_common.hpp +++ b/src/glm/core/func_common.hpp @@ -278,8 +278,8 @@ namespace glm /// you would want a threshold function with a smooth /// transition. This is equivalent to: /// genType t; - /// t = clamp ((x – edge0) / (edge1 – edge0), 0, 1); - /// return t * t * (3 – 2 * t); + /// t = clamp ((x ?edge0) / (edge1 ?edge0), 0, 1); + /// return t * t * (3 ?2 * t); /// Results are undefined if edge0 >= edge1. /// /// @tparam genType Floating-point scalar or vector types. diff --git a/src/glm/core/func_common.inl b/src/glm/core/func_common.inl index 4894410..5bb8005 100755 --- a/src/glm/core/func_common.inl +++ b/src/glm/core/func_common.inl @@ -277,7 +277,7 @@ namespace detail //// Only valid if (INT_MIN <= x-y <= INT_MAX) //// min(x,y) //r = y + ((x - y) & ((x - y) >> (sizeof(int) * - //CHAR_BIT – 1))); + //CHAR_BIT ?1))); //// max(x,y) //r = x - ((x - y) & ((x - y) >> (sizeof(int) * //CHAR_BIT - 1))); diff --git a/src/glm/core/func_integer.hpp b/src/glm/core/func_integer.hpp index e97a8f9..284e214 100755 --- a/src/glm/core/func_integer.hpp +++ b/src/glm/core/func_integer.hpp @@ -105,7 +105,7 @@ namespace glm /// returning them in the least significant bits of the result. /// For unsigned data types, the most significant bits of the /// result will be set to zero. For signed data types, the - /// most significant bits will be set to the value of bit offset + base – 1. + /// most significant bits will be set to the value of bit offset + base ?1. /// /// If bits is zero, the result will be zero. The result will be /// undefined if offset or bits is negative, or if the sum of @@ -125,7 +125,7 @@ namespace glm /// Returns the insertion the bits least-significant bits of insert into base. /// /// The result will have bits [offset, offset + bits - 1] taken - /// from bits [0, bits – 1] of insert, and all other bits taken + /// from bits [0, bits ?1] of insert, and all other bits taken /// directly from the corresponding bits of base. If bits is /// zero, the result will simply be base. The result will be /// undefined if offset or bits is negative, or if the sum of diff --git a/src/image.cpp b/src/image.cpp index 67bf157..46b6235 100755 --- a/src/image.cpp +++ b/src/image.cpp @@ -38,7 +38,7 @@ image::~image(){ //------------------------ float image::applyGamma(float f){ - //apply gamma correction, use simple power law gamma for now. + //apply gamma correction, use simple power law gamma for now. TODO: sRGB return pow(f/float(gamma.divisor), gamma.gamma); } diff --git a/src/interactions.h b/src/interactions.h index 6561796..8c3f5f6 100755 --- a/src/interactions.h +++ b/src/interactions.h @@ -8,10 +8,56 @@ #include "intersections.h" +struct Fresnel { + float reflectionCoefficient; + float transmissionCoefficient; +}; + +struct AbsorptionAndScatteringProperties{ + glm::vec3 absorptionCoefficient; + float reducedScatteringCoefficient; +}; + //forward declaration +__host__ __device__ bool calculateScatterAndAbsorption(ray& r, float& depth, AbsorptionAndScatteringProperties& currentAbsorptionAndScattering, glm::vec3& unabsorbedColor, material m, float randomFloatForScatteringDistance, float randomFloat2, float randomFloat3); __host__ __device__ glm::vec3 getRandomDirectionInSphere(float xi1, float xi2); +__host__ __device__ glm::vec3 calculateTransmission(glm::vec3 absorptionCoefficient, float distance); +__host__ __device__ glm::vec3 calculateTransmissionDirection(glm::vec3 normal, glm::vec3 incident, float incidentIOR, float transmittedIOR); +__host__ __device__ glm::vec3 calculateReflectionDirection(glm::vec3 normal, glm::vec3 incident); +__host__ __device__ Fresnel calculateFresnel(glm::vec3 normal, glm::vec3 incident, float incidentIOR, float transmittedIOR, glm::vec3 reflectionDirection, glm::vec3 transmissionDirection); __host__ __device__ glm::vec3 calculateRandomDirectionInHemisphere(glm::vec3 normal, float xi1, float xi2); +//TODO (OPTIONAL): IMPLEMENT THIS FUNCTION +__host__ __device__ glm::vec3 calculateTransmission(glm::vec3 absorptionCoefficient, float distance) { + return glm::vec3(0,0,0); +} + +//TODO (OPTIONAL): IMPLEMENT THIS FUNCTION +__host__ __device__ bool calculateScatterAndAbsorption(ray& r, float& depth, AbsorptionAndScatteringProperties& currentAbsorptionAndScattering, + glm::vec3& unabsorbedColor, material m, float randomFloatForScatteringDistance, float randomFloat2, float randomFloat3){ + return false; +} + +//TODO (OPTIONAL): IMPLEMENT THIS FUNCTION +__host__ __device__ glm::vec3 calculateTransmissionDirection(glm::vec3 normal, glm::vec3 incident, float incidentIOR, float transmittedIOR) { + return glm::vec3(0,0,0); +} + +//TODO (OPTIONAL): IMPLEMENT THIS FUNCTION +__host__ __device__ glm::vec3 calculateReflectionDirection(glm::vec3 normal, glm::vec3 incident) { + //nothing fancy here + return glm::vec3(0,0,0); +} + +//TODO (OPTIONAL): IMPLEMENT THIS FUNCTION +__host__ __device__ Fresnel calculateFresnel(glm::vec3 normal, glm::vec3 incident, float incidentIOR, float transmittedIOR, glm::vec3 reflectionDirection, glm::vec3 transmissionDirection) { + Fresnel fresnel; + + fresnel.reflectionCoefficient = 1; + fresnel.transmissionCoefficient = 0; + return fresnel; +} + //LOOK: This function demonstrates cosine weighted random direction generation in a sphere! __host__ __device__ glm::vec3 calculateRandomDirectionInHemisphere(glm::vec3 normal, float xi1, float xi2) { @@ -47,4 +93,13 @@ __host__ __device__ glm::vec3 getRandomDirectionInSphere(float xi1, float xi2) { return glm::vec3(0,0,0); } +//TODO (PARTIALLY OPTIONAL): IMPLEMENT THIS FUNCTION +//returns 0 if diffuse scatter, 1 if reflected, 2 if transmitted. +__host__ __device__ int calculateBSDF(ray& r, glm::vec3 intersect, glm::vec3 normal, glm::vec3 emittedColor, + AbsorptionAndScatteringProperties& currentAbsorptionAndScattering, + glm::vec3& color, glm::vec3& unabsorbedColor, material m){ + + return 1; +}; + #endif diff --git a/src/intersections.h b/src/intersections.h index a6b9469..a60f354 100755 --- a/src/intersections.h +++ b/src/intersections.h @@ -11,7 +11,7 @@ #include "glm/glm.hpp" #include "utilities.h" #include - +#include //Some forward declarations __host__ __device__ glm::vec3 getPointOnRay(ray r, float t); __host__ __device__ glm::vec3 multiplyMV(cudaMat4 m, glm::vec4 v); @@ -68,99 +68,129 @@ __host__ __device__ glm::vec3 getSignOfRay(ray r){ glm::vec3 inv_direction = getInverseDirectionOfRay(r); return glm::vec3((int)(inv_direction.x < 0), (int)(inv_direction.y < 0), (int)(inv_direction.z < 0)); } - //Wrapper for cube intersection test for testing against unit cubes __host__ __device__ float boxIntersectionTest(staticGeom box, ray r, glm::vec3& intersectionPoint, glm::vec3& normal){ - return boxIntersectionTest(glm::vec3(-.5,-.5,-.5), glm::vec3(.5,.5,.5), box, r, intersectionPoint, normal); + return boxIntersectionTest(glm::vec3(-.5,-.5,-.5), glm::vec3(.5,.5,.5), box, r, intersectionPoint, normal); } +//TODO: IMPLEMENT THIS FUNCTION //Cube intersection test, return -1 if no intersection, otherwise, distance to intersection -__host__ __device__ float boxIntersectionTest(glm::vec3 boxMin, glm::vec3 boxMax, staticGeom box, ray r, glm::vec3& intersectionPoint, glm::vec3& normal){ - glm::vec3 currentNormal = glm::vec3(0,0,0); - - ray ro = r; - - glm::vec3 iP0 = multiplyMV(box.inverseTransform,glm::vec4(r.origin, 1.0f)); - glm::vec3 iP1 = multiplyMV(box.inverseTransform,glm::vec4(r.origin+r.direction, 1.0f)); - glm::vec3 iV0 = iP1 - iP0; - - r.origin = iP0; - r.direction = glm::normalize(iV0); - - float tmin, tmax, tymin, tymax, tzmin, tzmax; - - glm::vec3 rsign = getSignOfRay(r); - glm::vec3 rInverseDirection = getInverseDirectionOfRay(r); - - if((int)rsign.x==0){ - tmin = (boxMin.x - r.origin.x) * rInverseDirection.x; - tmax = (boxMax.x - r.origin.x) * rInverseDirection.x; - }else{ - tmin = (boxMax.x - r.origin.x) * rInverseDirection.x; - tmax = (boxMin.x - r.origin.x) * rInverseDirection.x; - } - - if((int)rsign.y==0){ - tymin = (boxMin.y - r.origin.y) * rInverseDirection.y; - tymax = (boxMax.y - r.origin.y) * rInverseDirection.y; - }else{ - tymin = (boxMax.y - r.origin.y) * rInverseDirection.y; - tymax = (boxMin.y - r.origin.y) * rInverseDirection.y; - } - - if ( (tmin > tymax) || (tymin > tmax) ){ - return -1; - } - if (tymin > tmin){ - tmin = tymin; - } - if (tymax < tmax){ - tmax = tymax; - } - - if((int)rsign.z==0){ - tzmin = (boxMin.z - r.origin.z) * rInverseDirection.z; - tzmax = (boxMax.z - r.origin.z) * rInverseDirection.z; - }else{ - tzmin = (boxMax.z - r.origin.z) * rInverseDirection.z; - tzmax = (boxMin.z - r.origin.z) * rInverseDirection.z; - } +__host__ __device__ float boxIntersectionTest(glm::vec3 boxMin, glm::vec3 boxMax,staticGeom box, ray r, glm::vec3& intersectionPoint, glm::vec3& normal){ + + ray rt; + rt.origin = multiplyMV(box.inverseTransform,glm::vec4(r.origin,1.0f)); + rt.direction = multiplyMV(box.inverseTransform,glm::vec4(r.direction,0)); + /*float boxMin.x = -0.5; + float boxMax.x = 0.5; + float boxMin.y = -0.5; + float boxMax.y = 0.5; + float boxMin.z = -0.5; + float boxMax.z = 0.5;*/ + double tnear = -1000000000000000000; + double tfar = 1000000000000000000; + double t1, t2,tmp; + + //xplaner + if(abs(rt.direction.x) < EPSILON) + //if(rt.direction.x == 0) + { + if(rt.origin.x>boxMax.x || rt.origin.xt2) + { + tmp = t1; + t1 = t2; + t2 = tmp; + } + if(t1>tnear) tnear = t1; + if(t2boxMax.y || rt.origin.yt2) + { + tmp = t1; + t1 = t2; + t2 = tmp; + } + if(t1>tnear) tnear = t1; + if(t2boxMax.z || rt.origin.zt2) + { + tmp = t1; + t1 = t2; + t2 = tmp; + } + if(t1>tnear) tnear = t1; + if(t2maxv) + { + objnormal = glm::vec3(0,0,interp.z); + } + else + { + if(abs(interp.x)>abs(interp.y)) + { + objnormal = glm::vec3(interp.x,0,0); + } + else + { + + objnormal = glm::vec3(0,interp.y,0); + } + } + objnormal = glm::normalize(objnormal); + normal = multiplyMV(box.transform,glm::vec4(objnormal,0)); + normal = glm::normalize(normal); + /*if(abs(normal.x) !=1 && abs(normal.y) !=1 && abs(normal.z) !=1) + printf("%f,%f,%f ",r.direction.x,r.direction.y,r.direction.z);*/ + intersectionPoint = multiplyMV(box.transform,glm::vec4(interp,1.0f)); + return glm::length(intersectionPoint - r.origin); - if ( (tmin > tzmax) || (tzmin > tmax) ){ - return -1; - } - if (tzmin > tmin){ - tmin = tzmin; - } - if (tzmax < tmax){ - tmax = tzmax; - } - if(tmin<0){ - return -1; - } - - glm::vec3 osintersect = r.origin + tmin*r.direction; - - if(abs(osintersect.x-abs(boxMax.x))<.001){ - currentNormal = glm::vec3(1,0,0); - }else if(abs(osintersect.y-abs(boxMax.y))<.001){ - currentNormal = glm::vec3(0,1,0); - }else if(abs(osintersect.z-abs(boxMax.z))<.001){ - currentNormal = glm::vec3(0,0,1); - }else if(abs(osintersect.x+abs(boxMin.x))<.001){ - currentNormal = glm::vec3(-1,0,0); - }else if(abs(osintersect.y+abs(boxMin.y))<.001){ - currentNormal = glm::vec3(0,-1,0); - }else if(abs(osintersect.z+abs(boxMin.z))<.001){ - currentNormal = glm::vec3(0,0,-1); - } - - intersectionPoint = multiplyMV(box.transform, glm::vec4(osintersect, 1.0)); - - - - normal = multiplyMV(box.transform, glm::vec4(currentNormal,0.0)); - return glm::length(intersectionPoint-ro.origin); } //LOOK: Here's an intersection test example from a sphere. Now you just need to figure out cube and, optionally, triangle. @@ -202,6 +232,149 @@ __host__ __device__ float sphereIntersectionTest(staticGeom sphere, ray r, glm:: return glm::length(r.origin - realIntersectionPoint); } +__host__ __device__ float Determinate(glm::vec3 c1, glm::vec3 c2) +{ + return c1[0]*c2[1]+c2[0]*c1[2]+c1[1]*c2[2]-c1[2]*c2[1]-c2[0]*c1[1]-c1[0]*c2[2]; +} +__host__ __device__ float triangleIntersectionTest(staticGeom mesh,glm::vec3 p1, glm::vec3 p2, glm::vec3 p3, ray r, glm::vec3&intersectionPoint, glm::vec3 normal) +{ + ray rt; + rt.origin = multiplyMV(mesh.inverseTransform,glm::vec4(r.origin,1.0f)); + rt.direction = multiplyMV(mesh.inverseTransform,glm::vec4(r.direction,0)); + + //plane equation : normal (dot product) x = d; + double d = normal.x*p1.x+normal.y*p1.y+normal.z*p1.z; + //substitude ray equation to it + // n(p0+tv0) = d + //np0+tnv0 = d;-> t = (d-np0)/nv0 + double temp = normal.x*rt.origin.x+normal.y*rt.origin.y+normal.z*rt.origin.z; + double temp2 = normal.x*rt.direction.x+normal.y*rt.direction.y+normal.z*rt.direction.z; + if (temp2 == 0) + { + //ray is parallel to the plane + return -1; + } + double t1 = (d - temp)/temp2; + float t = t1; + glm::vec3 p = rt.origin+glm::vec3(t1*rt.direction.x,t1*rt.direction.y,t1*rt.direction.z); + //tell if possible intersection point is incide the triangle + //I use the method described on ppt 659 + //calculate s + glm::vec3 c1(p1.y,p2.y,p3.y); + glm::vec3 c2(p1.z,p2.z,p3.z); + glm::vec3 c3(p1.x,p2.x,p3.x); + double d1 = Determinate(c1,c2); + double d2 = Determinate(c2,c3); + double d3 = Determinate(c3,c1); + double s = 0.5*sqrt(d1*d1+d2*d2+d3*d3); + if (s<=EPSILON) + { + return -1; + } + c1 = glm::vec3(p.y,p2.y,p3.y); + c2 = glm::vec3(p.z,p2.z,p3.z); + c3 = glm::vec3(p.x,p2.x,p3.x); + d1 = Determinate(c1,c2); + d2 = Determinate(c2,c3); + d3 = Determinate(c3,c1); + double s1 = 0.5*sqrt(d1*d1+d2*d2+d3*d3)/s; + + c1 = glm::vec3(p.y,p3.y,p1.y); + c2 = glm::vec3(p.z,p3.z,p1.z); + c3 = glm::vec3(p.x,p3.x,p1.x); + d1 = Determinate(c1,c2); + d2 = Determinate(c2,c3); + d3 = Determinate(c3,c1); + double s2 = 0.5*sqrt(d1*d1+d2*d2+d3*d3)/s; + + c1 = glm::vec3(p.y,p1.y,p2.y); + c2 = glm::vec3(p.z,p1.z,p2.z); + c3 = glm::vec3(p.x,p1.x,p2.x); + d1 = Determinate(c1,c2); + d2 = Determinate(c2,c3); + d3 = Determinate(c3,c1); + double s3 = 0.5*sqrt(d1*d1+d2*d2+d3*d3)/s; + if((s1>=0&&s1<=1)&&(s2>=0&&s2<=1)&&(s3>=0&&s3<=1)&&(s1+s2+s3-1 pbo,thrust::device_vector ibo, thrust::device_vector nbo) +{ + staticGeom boundingBox; + boundingBox.rotation = glm::vec3(0,0,0); + boundingBox.translation = mesh.translation; + boundingBox.transform = mesh.transform; + float dist = boxIntersectionTest(mesh.boundingBox_min,mesh.boundingBox_max,boundingBox,r,intersectionPoint,normal); + if(dist == -1) + return -1; + else + { + glm::vec3 v1,v2,v3; + float currDist = -1; + dist = -1; + glm::vec3 interP; + glm::vec3 tmpNormal; + for(int i = 0;i pbo,thrust::device_vector ibo, thrust::device_vector nbo) +{ + float dist = -1; + if(geom.type == SPHERE) + { + dist = sphereIntersectionTest(geom,r, intersectionPoint,interNormal); + } + else if(geom.type == CUBE) + { + dist = boxIntersectionTest(geom,r, intersectionPoint,interNormal); + } + else + { + //TODO MESH + //dist = meshIntersectionTest(geom,r,intersectionPoint,interNormal,pbo,ibo,nbo); + } + return dist; +} //returns x,y,z half-dimensions of tightest bounding box __host__ __device__ glm::vec3 getRadiuses(staticGeom geom){ @@ -227,7 +400,7 @@ __host__ __device__ glm::vec3 getRandomPointOnCube(staticGeom cube, float random glm::vec3 radii = getRadiuses(cube); float side1 = radii.x * radii.y * 4.0f; //x-y face float side2 = radii.z * radii.y * 4.0f; //y-z face - float side3 = radii.x * radii.z* 4.0f; //x-z face + float side3 = radii.x * radii.z * 4.0f; //x-z face float totalarea = 2.0f * (side1+side2+side3); //pick random face, weighted by surface area @@ -253,28 +426,29 @@ __host__ __device__ glm::vec3 getRandomPointOnCube(staticGeom cube, float random }else{ //x-z-back face point = glm::vec3((float)u02(rng), -.5, (float)u02(rng)); - } - + } glm::vec3 randPoint = multiplyMV(cube.transform, glm::vec4(point,1.0f)); return randPoint; } +//TODO: IMPLEMENT THIS FUNCTION //Generates a random point on a given sphere __host__ __device__ glm::vec3 getRandomPointOnSphere(staticGeom sphere, float randomSeed){ - float radius=.5f; - thrust::default_random_engine rng(hash(randomSeed)); - thrust::uniform_real_distribution u01(-1,1); - thrust::uniform_real_distribution u02(0,TWO_PI); - - float theta = (float)u02(rng); - float cosphi = (float)u01(rng); - float sinphi = sqrt(1 - cosphi*cosphi); - glm::vec3 point = radius*glm::vec3(sinphi*cos(theta),sinphi*sin(theta),cosphi); - glm::vec3 randPoint = multiplyMV(sphere.transform, glm::vec4(point,1.0f)); - - return randPoint; + + float radius=.5f; + thrust::default_random_engine rng(hash(randomSeed)); + thrust::uniform_real_distribution u01(-1,1); + thrust::uniform_real_distribution u02(0,TWO_PI); + + float theta = (float)u02(rng); + float cosphi = (float)u01(rng); + float sinphi = sqrt(1 - cosphi*cosphi); + glm::vec3 point = radius*glm::vec3(sinphi*cos(theta),sinphi*sin(theta),cosphi); + glm::vec3 randPoint = multiplyMV(sphere.transform, glm::vec4(point,1.0f)); + + return randPoint; } #endif diff --git a/src/main.cpp b/src/main.cpp index 81836b1..95e68f0 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,11 +6,39 @@ // Yining Karl Li's TAKUA Render, a massively parallel pathtracing renderer: http://www.yiningkarlli.com #include "main.h" - +#include //------------------------------- //-------------MAIN-------------- //------------------------------- +// added for camera interaction +void mouseClick(int button, int status,int x,int y); +void mouseMotion(int x, int y); +static bool r_buttonDown = false; +static bool l_buttonDown = false; +static int g_yclick = 0; +static int g_ylclick = 0; +static int g_xlclick = 0; +int mouse_old_x, mouse_old_y; +glm::vec3 originPos; +glm::vec3 originView; + +float fps = 0; +float preTime = 0; +float currTime; +int frames = 0; +void CalcFPS() +{ + frames ++; + currTime = glutGet(GLUT_ELAPSED_TIME); + if(currTime - preTime > 1000) + { + fps = frames*1000.0/(currTime - preTime); + preTime = currTime; + frames = 0; + } +} +unsigned char button_mask = 0x00; int main(int argc, char** argv){ #ifdef __APPLE__ @@ -42,6 +70,7 @@ int main(int argc, char** argv){ } } + if(!loadedScene){ cout << "Error: scene file needed!" << endl; return 0; @@ -52,7 +81,9 @@ int main(int argc, char** argv){ renderCam = &renderScene->renderCam; width = renderCam->resolution[0]; height = renderCam->resolution[1]; - + originView = glm::vec3(renderCam->views->x,renderCam->views->y,renderCam->views->z); + originPos = glm::vec3(renderCam->positions->x,renderCam->positions->y,renderCam->positions->z); + if(targetFrame>=renderCam->frames){ cout << "Warning: Specified target frame is out of range, defaulting to frame 0." << endl; targetFrame = 0; @@ -85,12 +116,12 @@ int main(int argc, char** argv){ exit(0); } } - glfwTerminate(); #else glutDisplayFunc(display); + glutMouseFunc (mouseClick); + glutMotionFunc (mouseMotion); glutKeyboardFunc(keyboard); - glutMainLoop(); #endif return 0; @@ -107,29 +138,31 @@ void runCuda(){ if(iterationsiterations){ uchar4 *dptr=NULL; - iterations++; + iterations++; cudaGLMapBufferObject((void**)&dptr, pbo); //pack geom and material arrays geom* geoms = new geom[renderScene->objects.size()]; material* materials = new material[renderScene->materials.size()]; - + // mesh* meshes = new mesh[renderScene->numOfMesh]; + for(int i=0; iobjects.size(); i++){ geoms[i] = renderScene->objects[i]; } for(int i=0; imaterials.size(); i++){ materials[i] = renderScene->materials[i]; } - + // execute the kernel - cudaRaytraceCore(dptr, renderCam, targetFrame, iterations, materials, renderScene->materials.size(), geoms, renderScene->objects.size() ); + cudaRaytraceCore(dptr, renderCam, targetFrame, iterations, materials, renderScene->materials.size(), geoms, renderScene->objects.size());//,renderScene->pbo,renderScene->ibo,renderScene->nbo); // unmap buffer object cudaGLUnmapBufferObject(pbo); }else{ - if(!finishedRender){ + if(!finishedRender) + { //output image file image outputImage(renderCam->resolution.x, renderCam->resolution.y); @@ -142,8 +175,8 @@ void runCuda(){ gammaSettings gamma; gamma.applyGamma = true; - gamma.gamma = 1.0; - gamma.divisor = 1.0; //renderCam->iterations; + gamma.gamma = 1.0/2.2; + gamma.divisor = 1.0;//renderCam->iterations; outputImage.setGammaSettings(gamma); string filename = renderCam->imageName; string s; @@ -200,8 +233,8 @@ void runCuda(){ void display(){ runCuda(); - - string title = "565Raytracer | " + utilityCore::convertIntToString(iterations) + " Iterations"; + CalcFPS(); + string title = "565Raytracer | " + utilityCore::convertIntToString(iterations) + " Iterations" + utilityCore::convertFloatToString(fps) + "fps"; glutSetWindowTitle(title.c_str()); glBindBuffer( GL_PIXEL_UNPACK_BUFFER, pbo); @@ -220,12 +253,23 @@ void runCuda(){ void keyboard(unsigned char key, int x, int y) { + //glm::vec3* oldPos; std::cout << key << std::endl; switch (key) { case(27): exit(1); break; + case('r'): + { + + renderCam->positions = new glm::vec3(originPos.x,originPos.y,originPos.z); ; + renderCam->views = new glm::vec3(originView.x,originView.y,originView.z); + iterations = 0; + runCuda(); + break; + } + } } @@ -396,3 +440,40 @@ void shut_down(int return_code){ #endif exit(return_code); } + +void mouseClick(int button,int state, int x,int y) +{ + if(button == GLUT_RIGHT_BUTTON) + { + //std::cout<<"ss"<positions->z; + } + else if(button == GLUT_LEFT_BUTTON) + { + l_buttonDown = (state == GLUT_DOWN) ? true:false; + g_ylclick = y - (renderCam->positions->y + renderCam->views->y); + g_xlclick = x -(renderCam->positions->x + renderCam->views->x); + } +} + +void mouseMotion(int x, int y) +{ + if(r_buttonDown) + { + renderCam->positions->z = (y - g_yclick)/5.0; + iterations = 0; + finishedRender = false; + runCuda(); + //glutPostRedisplay(); + } + else if(l_buttonDown) + { + renderCam->views->x = (x - g_xlclick)/500.0; + renderCam->views->y = (y - g_ylclick)/500.0; + iterations = 0; + finishedRender = false; + runCuda(); + //glutPostRedisplay(); + } +} \ No newline at end of file diff --git a/src/raytraceKernel.cu b/src/raytraceKernel.cu index 87a65a6..ae1b297 100755 --- a/src/raytraceKernel.cu +++ b/src/raytraceKernel.cu @@ -9,12 +9,29 @@ #include #include #include "sceneStructs.h" +#include "glm/glm.hpp" #include "utilities.h" #include "raytraceKernel.h" #include "intersections.h" #include "interactions.h" #include -#include "glm/glm.hpp" +#include +#include +#include +#include +#include +#include + +#if CUDA_VERSION >= 5000 + #include +#else + #include +#endif + +//#if defined(__CUDA_ARCH__) && (__CUDA_ARCH__ < 200) +//#define printf(f, ...) ((void)(f, __VA_ARGS__),0) +//#endif +#define DEPTH_OF_FIELD void checkCUDAError(const char *msg) { cudaError_t err = cudaGetLastError(); @@ -35,41 +52,41 @@ __host__ __device__ glm::vec3 generateRandomNumberFromThread(glm::vec2 resolutio return glm::vec3((float) u01(rng), (float) u01(rng), (float) u01(rng)); } -//Kernel that does the initial raycast from the camera. -__host__ __device__ ray raycastFromCameraKernel(glm::vec2 resolution, float time, int x, int y, glm::vec3 eye, glm::vec3 view, glm::vec3 up, glm::vec2 fov){ - - int index = x + (y * resolution.x); - - thrust::default_random_engine rng(hash(index*time)); - thrust::uniform_real_distribution u01(0,1); - - //standard camera raycast stuff - glm::vec3 E = eye; - glm::vec3 C = view; - glm::vec3 U = up; - float fovx = fov.x; - float fovy = fov.y; - - float CD = glm::length(C); - - glm::vec3 A = glm::cross(C, U); - glm::vec3 B = glm::cross(A, C); - glm::vec3 M = E+C; - glm::vec3 H = (A*float(CD*tan(fovx*(PI/180))))/float(glm::length(A)); - glm::vec3 V = (B*float(CD*tan(-fovy*(PI/180))))/float(glm::length(B)); - - float sx = (x)/(resolution.x-1); - float sy = (y)/(resolution.y-1); - - glm::vec3 P = M + (((2*sx)-1)*H) + (((2*sy)-1)*V); - glm::vec3 PmE = P-E; - glm::vec3 R = E + (float(200)*(PmE))/float(glm::length(PmE)); - - glm::vec3 direction = glm::normalize(R); - //major performance cliff at this point, TODO: find out why! +//TODO: IMPLEMENT THIS FUNCTION +//Function that does the initial raycast from the camera +__host__ __device__ ray raycastFromCameraKernel(glm::vec2 resolution, float time, float x, float y, glm::vec3 eye, glm::vec3 view, glm::vec3 up, glm::vec2 fov){ + //TODO: CLEAR UP + int index = y * resolution.x + x; ray r; - r.origin = eye; - r.direction = direction; + r.origin = eye; + float sx, sy; + + //anti-aliasing + thrust::default_random_engine rng(hash(time*index)); + thrust::uniform_real_distribution u01(-0.5,0.5); + sx = (float)(x+(float)u01(rng))/((float)resolution.x-1); + sy = (float)(y+(float)u01(rng))/((float)resolution.y-1); + + glm::vec3 C = view; + glm::vec3 M = eye + C; + glm::vec3 A = glm::cross(C,up); + glm::vec3 B = glm::cross(A,C); + glm::vec3 H = A*glm::length(C)*(float)tan(fov.x*PI/180.0) / glm::length(A); + glm::vec3 V = B*glm::length(C)*(float)tan(fov.y*PI/180.0) / glm::length(B); + + glm::vec3 P = M + (float)(2.0*sx - 1)*H + (float)(1 - 2.0*sy)*V; + r.direction = P-eye; + r.direction = glm::normalize(r.direction); + +#ifdef DEPTH_OF_FIELD + //Depth of field + thrust::uniform_real_distribution u02(-0.3,0.3); + glm::vec3 aimPoint = r.origin + (float)DOFLENGTH * r.direction; + r.origin += glm::vec3(u02(rng),u02(rng),u02(rng)); + r.direction = aimPoint - r.origin; + r.direction = glm::normalize(r.direction); +#endif + return r; } @@ -83,7 +100,7 @@ __global__ void clearImage(glm::vec2 resolution, glm::vec3* image){ } } -//Kernel that writes the image to the OpenGL PBO directly. +//Kernel that writes the image to the OpenGL PBO directly. __global__ void sendImageToPBO(uchar4* PBOpos, glm::vec2 resolution, glm::vec3* image){ int x = (blockIdx.x * blockDim.x) + threadIdx.x; @@ -92,7 +109,7 @@ __global__ void sendImageToPBO(uchar4* PBOpos, glm::vec2 resolution, glm::vec3* if(x<=resolution.x && y<=resolution.y){ - glm::vec3 color; + glm::vec3 color; color.x = image[index].x*255.0; color.y = image[index].y*255.0; color.z = image[index].z*255.0; @@ -111,59 +128,574 @@ __global__ void sendImageToPBO(uchar4* PBOpos, glm::vec2 resolution, glm::vec3* // Each thread writes one pixel location in the texture (textel) PBOpos[index].w = 0; - PBOpos[index].x = color.x; + PBOpos[index].x = color.x; PBOpos[index].y = color.y; PBOpos[index].z = color.z; } } +__host__ __device__ glm::vec3 getReflect(glm::vec3 normal, ray Ri) +{ + return glm::normalize(-2.0f * normal * (float)glm::dot(Ri.direction,normal) + Ri.direction); +} +__host__ __device__ glm::vec3 getRefractRay(float rand,glm::vec3 normal, ray Ri,float n1, float n2) +{ + //determine whether reflect or refract + glm::vec3 Rr = getReflect(normal,Ri); + float cosThetai = -1.0f * glm::dot(Ri.direction,normal); + float sqrsinThetat = (n1*n1)/(n2*n2) * (1-cosThetai*cosThetai); + //if n1>n2, there should be a critical angle + if(sqrsinThetat > 1) return Rr; + + float cosThetat = sqrt(1-sqrsinThetat*sqrsinThetat); + float rV = (n1*cosThetai - n2*cosThetat)/(n1*cosThetai + n2*cosThetat+EPSILON); + rV = rV*rV; + float rP = (n2*cosThetai - n1*cosThetat)/(n2*cosThetai + n1*cosThetat+EPSILON); + rP = rP*rP; + if(rand<=rV) + { + //reflect + return getReflect(normal,Ri); + } + else + { + //transmittance, refract + glm::vec3 Rt = (float)(n1/n2)*Ri.direction + (float)(n1/n2*cosThetai - sqrt(1-sqrsinThetat))*normal; + Rt = glm::normalize(Rt); + return Rt; + } + printf("error"); + return glm::vec3(0,0,0); +} + +/////shadow check only for raytracer +__host__ __device__ bool ShadowRayUnblocked(glm::vec3 point,glm::vec3 lightPos,staticGeom* geoms, int numberOfGeoms,material* mats) + //, glm::vec3* pbo,unsigned short* ibo, glm::vec3* nbo) + //thrust::device_vector pbo,thrust::device_vector ibo, thrust::device_vector nbo) +{ + //return true; + float tmpDist = -1; + glm::vec3 tmpnormal; + glm::vec3 intersectionPoint; + ray r; r.origin = point; + r.direction = lightPos-point; r.direction = glm::normalize(r.direction); + r.origin += r.direction*0.1f; + float lightToObjDist = glm::length(lightPos - r.origin)-0.25; + for(int i = 0;i -1 && tmpDist < lightToObjDist&&mats[i].emittance == 0) + { + return false; + } + } + return true; +} + +//recursive raytrace +__device__ void raytrace(ray Ri,glm::vec2 resolution, float time, cameraData cam, int rayDepth,int rayIndex, glm::vec3& color, + staticGeom* geoms, int numberOfGeoms,material* mats,int* lightIndex,int lightNum) + //,glm::vec3* pbo,unsigned short* ibo, glm::vec3* nbo) + //thrust::device_vector pbo,thrust::device_vector ibo, thrust::device_vector nbo) +{ + if(rayIndex > rayDepth) + { + color = glm::vec3(bgColorR,bgColorG,bgColorB); + return; + } + color = glm::vec3(0,0,0); + /////////////variables////////////// + ray Rr; //reflect ray + ray Rrl; // light reflect ray + glm::vec3 intersectionPoint(0,0,0); + glm::vec3 normal(0,0,0); + glm::vec3 diffuseColor(0,0,0); + glm::vec3 specularColor(0,0,0); + glm::vec3 reflectedColor(1.0,1.0,1.0); + glm::vec3 refractColor(0,0,0); // TODO, haven't uesed yet + glm::vec3 localColor(0,0,0); + glm::vec3 lightPosition (0,0,0); + int nearestObjIndex = -1; // nearest intersect object index + glm::vec3 ambient(ambientColorR,ambientColorG,ambientColorB); ambient *= Kambient; + float interPointDist = -1; + int nearestLight = -1; + //////////////////////////////////////////// + glm::vec3 tmpnormal(0,0,0); + float tmpDist = -1; + //////////////////////////////////////////// + + for(int i = 0;i0)) + { + if(interPointDist == -1) + color = glm::vec3(bgColorR,bgColorG,bgColorB); + else + color = mats[nearestObjIndex].color; + return; + } + else if(interPointDist!= -1 && mats[nearestObjIndex].emittance == 0) + { + // this is the reflect ray + Rr.direction = normal; + Rr.direction *= glm::dot(Ri.direction,normal); + Rr.direction *= -2.0; + Rr.direction += glm::normalize(Ri.direction); + Rr.origin = intersectionPoint; + Rr.direction = glm::normalize(Rr.direction); + //////////////////////////////////////////////// + + if(mats[nearestObjIndex].hasReflective>0) + { + //raytrace(Rr,resolution, time, cam, rayDepth,rayIndex+1,reflectedColor,geoms,numberOfGeoms,mats,lightIndex,lightNum); + color = glm::vec3(mats[nearestObjIndex].hasReflective*reflectedColor.x,mats[nearestObjIndex].hasReflective*reflectedColor.y,mats[nearestObjIndex].hasReflective*reflectedColor.z); + //printf("%f,%f,%f ::",reflectedColor.x,reflectedColor.y,reflectedColor.z); + } + color += ambient * mats[nearestObjIndex].color; + //shadow check + for(int j = 0;j pbo,thrust::device_vector ibo, thrust::device_vector nbo) +{ int x = (blockIdx.x * blockDim.x) + threadIdx.x; int y = (blockIdx.y * blockDim.y) + threadIdx.y; int index = x + (y * resolution.x); + //if(sampleIndex == 0) + // colors[index] = glm::vec3(0,0,0); + int rayIndex = 0; + if((x<=resolution.x && y<=resolution.y)){ + + //colors[index] = glm::vec3(rays[index].direction.x,rays[index].direction.y,rays[index].direction.z); + /////////////variables////////////// + ray Ri = raycastFromCameraKernel(resolution, time, x,y,cam.position, cam.view, cam.up, cam.fov); + //ray Ri = rays[index].rays[sampleIndex]; + ray Rr = Ri; //reflect ray + ray Rrefra; // refraction ray + ray Rreflect; // reflect ray when hitting refract object + ray Rrl; // light reflect ray + glm::vec3 intersectionPoint(0,0,0); + glm::vec3 normal(0,0,0); + glm::vec3 diffuseColor(0,0,0); + glm::vec3 specularColor(0,0,0); + glm::vec3 refractColor(0,0,0); // TODO, haven't uesed yet + glm::vec3 reflectColor(1,1,1); + glm::vec3 localColor(0,0,0); + glm::vec3 lightPosition (0,0,0); + int nearestObjIndex = -1; // nearest intersect object index + glm::vec3 ambient(1.0,1.0,1.0); ambient *= 0.3; // *=kambient; + float interPointDist = -1; + int nearestLight = -1; + float hasReflect = 1.0; + glm::vec3 tmpnormal(0,0,0); + float tmpDist = -1; + glm::vec3 color(0,0,0); + float reflectCoeff = 0; + glm::vec3 oneColor(0,0,0); // used to store each sample ray's color; - ray r = raycastFromCameraKernel(resolution, time, x, y, cam.position, cam.view, cam.up, cam.fov); + //Fresnel + float refraCoff1 = 1.0f;//air + float refraCoff2 = 0; + float fractionRefra = 0; + float fractionRefle = 0; + float hasRefract = 1.0; + bool hasShootReflect = false; // refraction use + int rayType = 0; // 0 for first ray, 1 for reflect ray from non-refraction surface, 2 for refraction ray from refract surface, 3 for reflect ray from refract surface + //////////////////////////////////////////// + while(rayIndex <= rayDepth &&(abs(hasReflect - 1.0)0)) + { + if(interPointDist == -1) + { + //TODO change background color + color = glm::vec3(0.25,0.18,0.1); + } + else + { + color = mats[nearestObjIndex].color; + } + hasRefract = 0; + hasReflect = 0; + } +#pragma endregion +#pragma region else if hit scene + else if(interPointDist!= -1 && mats[nearestObjIndex].emittance == 0) + { + // this is the reflect ray + Rr.direction = normal; + Rr.direction *= glm::dot(Ri.direction,normal); + Rr.direction *= -2.0; + Rr.direction += glm::normalize(Ri.direction); + Rr.origin = intersectionPoint; + Rr.direction = glm::normalize(Rr.direction); + //////////////////////////////////////////////// + if(mats[nearestObjIndex].hasReflective>0) + { + /*Ri = Rr;*/ + reflectCoeff = mats[nearestObjIndex].hasReflective; + hasReflect = 1.0; + //rayType = 1; + } + else if(mats[nearestObjIndex].hasRefractive>0) + { + refraCoff1 = 1.0f; + refraCoff2 = mats[nearestObjIndex].indexOfRefraction; + //if(glm::length(normal)-1.0>0.000001) printf("%f ",glm::length(normal)); + float cosThetai = -1.0f * glm::dot(Ri.direction,normal); + float squareSinThetat = pow((double)refraCoff1/(double)refraCoff1,(double)2.0) * (1-pow((double)cosThetai,(double)2.0)); + float Rverticle = (refraCoff1*cosThetai - refraCoff2*cosThetai) / (refraCoff1*cosThetai + refraCoff2*cosThetai); + Rverticle = pow((double)Rverticle,(double)2.0); + float Rparall = (refraCoff2*cosThetai - refraCoff1*cosThetai) / (refraCoff2*cosThetai + refraCoff1*cosThetai); + Rparall = pow((double)Rparall,(double)2.0); + float cosThetat = sqrt(1-squareSinThetat); + fractionRefle = (Rverticle + Rparall) / 2.0; + fractionRefra = 1 - fractionRefle; + Rrefra.origin = intersectionPoint; + Rrefra.direction = Ri.direction; Rrefra.direction*=(refraCoff1/refraCoff2); + glm::vec3 tmp = normal; + tmp *= (refraCoff1/refraCoff2*cosThetai - sqrt(1-squareSinThetat)); + Rrefra.direction += tmp; + Rrefra.direction = glm::normalize(Rrefra.direction); + Rreflect = Rr; + hasRefract = 1.0; + //hasReflect = 1.0; + } + else + { + hasRefract = 0; + hasReflect = 0; + } + color += ambient * mats[nearestObjIndex].color; + //shadow check + for(int j = 0;j0) + { + oneColor = color; + Ri = Rr; + rayType = 1; + } + else if(hasRefract >0) + { + Ri = Rrefra; + rayType = 2; + } + else + oneColor = color; + rayIndex ++; + } + else if(rayType == 1) + { + oneColor += reflectCoeff * color; + + if(hasReflect>0) + { + Ri = Rr; + rayType = 1; + } + else if(hasRefract >0) + { + Ri = Rrefra; + rayType = 2; + } + rayIndex ++; + } + else if(rayType == 2) + { + oneColor += fractionRefra * color; + Ri = Rreflect; + rayType = 3; + } + else if(rayType ==3) + { + oneColor += fractionRefle * color; + Ri = Rr; + rayType = 1; + rayIndex ++; + } + + } + colors[index] = (colors[index]*(time-1)+oneColor) / time; + } + +} - if((x<=resolution.x && y<=resolution.y)){ +__global__ void generateInitialRays(ray* initialRay,glm::vec3* rayColor, glm::vec2 resolution,float time, cameraData cam) +{ + int x = (blockIdx.x * blockDim.x) + threadIdx.x; + int y = (blockIdx.y * blockDim.y) + threadIdx.y; + int index = x + (y * resolution.x); + ray r = raycastFromCameraKernel(resolution, time, x,y,cam.position, cam.view, cam.up, cam.fov); + r.tag = 1; // valid, 0 if invalid + r.pixelId = index; + initialRay[index] = r; + rayColor[index] = glm::vec3(1,1,1); +} - float MAX_DEPTH = 100000000000000000; - float depth = MAX_DEPTH; - - for(int i=0; i-EPSILON){ - MAX_DEPTH = depth; - colors[index] = materials[geoms[i].materialid].color; - } - } +__global__ void pathTracer(float time,cameraData cam,int rayDepth,glm::vec3* colors, + staticGeom* geoms,int numberOfGeoms,material* mats,int* lightIndex,int lightNum,ray* rays,int rayNum,glm::vec3* rayColor) + //, glm::vec3* pbo,unsigned short* ibo, glm::vec3* nbo) + //thrust::device_vector pbo,thrust::device_vector ibo, thrust::device_vector nbo) +{ + /*int x = (blockIdx.x * blockDim.x) + threadIdx.x; + int y = (blockIdx.y * blockDim.y) + threadIdx.y; + int index = x + (y * resolution.x);*/ + int index = blockDim.x * blockIdx.x + threadIdx.x; + + if(index <= rayNum) + { + ray Ri = rays[index]; + Ri.origin += INTEROFFSET * Ri.direction; + int pixelId = Ri.pixelId; // this index is correspond to the index in rayColor buffer + if(rayDepth >= BOUNCE_DEPTH) + { + //if the ray didn't hit any bg or light, but ray depth is overload, then terminate it. + colors[pixelId] = (colors[pixelId]*(time-1) + rayColor[pixelId])/time; + return; + } + + //test intersectoin + glm::vec3 intersectionPoint(0,0,0); + glm::vec3 normal(0,0,0); + int nearestObjIndex = -1; // nearest intersect object index + float interPointDist = -1; + int nearestLight = -1; + glm::vec3 tmpnormal(0,0,0); + for(int i = 0;i0)) + { + if(interPointDist == -1) + { + //TODO change background color + rayColor[pixelId] *= Ri.color_fraction * glm::vec3(0,0,0); // hit background + + } + else + { + rayColor[pixelId] *= mats[nearestObjIndex].emittance * mats[nearestObjIndex].color; // hit light + } + //set ray dead; + colors[pixelId] = (colors[pixelId]*(time-1)+rayColor[pixelId])/time; + //colors[pixelId] += rayColor[pixelId]; + rays[index].tag = -1; + return; + } +#pragma endregion + else // did hit objects in the scene + { + ray secondRay; //secondary Ray + secondRay.origin = intersectionPoint; + thrust::default_random_engine rng(hash(time*(rayDepth+1))*hash(pixelId)); + thrust::uniform_real_distribution u01(0,1); + if(mats[nearestObjIndex].hasReflective>0) + { + //reflect ray, set current ray as this ray + float rand =(float) u01(rng); + secondRay.origin = intersectionPoint; + if(rand0) + { + //refract ray + //Fresnel law, either reflect or refract + //thrust to generate cofficient + float rand =(float)u01(rng); + //TODO:how to tell whether ray goes in or out ? // add index for ray, 1.0 by default + if(Ri.m_index == 1.0) + { + //going into the object + secondRay.direction = getRefractRay(rand,normal,Ri,1.0,mats[nearestObjIndex].indexOfRefraction); + secondRay.m_index = mats[nearestObjIndex].indexOfRefraction; + } + else + { + //going out from object + secondRay.direction = getRefractRay(rand,-normal,Ri,mats[nearestObjIndex].indexOfRefraction,1.0); + } + } + else + { + secondRay.direction = calculateRandomDirectionInHemisphere(normal, u01(rng), u01(rng)); + secondRay.direction = glm::normalize(secondRay.direction); + //index changes everytime !!! + rayColor[pixelId] *= mats[nearestObjIndex].color;//*Ri.color_fraction; + } + rays[index] = secondRay; + secondRay.origin += INTEROFFSET*secondRay.direction; + } - //colors[index] = generateRandomNumberFromThread(resolution, time, x, y); - } + } } - //TODO: FINISH THIS FUNCTION // Wrapper for the __global__ call that sets up the kernel calls and does a ton of memory management -void cudaRaytraceCore(uchar4* PBOpos, camera* renderCam, int frame, int iterations, material* materials, int numberOfMaterials, geom* geoms, int numberOfGeoms){ +void cudaRaytraceCore(uchar4* PBOpos, camera* renderCam, int frame, int iterations, material* materials, int numberOfMaterials, geom* geoms, int numberOfGeoms) + //,std::vector pbo,std::vector ibo, std::vectornbo) +{ - int traceDepth = 1; //determines how many bounces the raytracer traces + // int traceDepth = 3; //determines how many bounces the raytracer traces + // set up crucial magic int tileSize = 8; dim3 threadsPerBlock(tileSize, tileSize); @@ -174,12 +706,60 @@ void cudaRaytraceCore(uchar4* PBOpos, camera* renderCam, int frame, int iteratio cudaMalloc((void**)&cudaimage, (int)renderCam->resolution.x*(int)renderCam->resolution.y*sizeof(glm::vec3)); cudaMemcpy( cudaimage, renderCam->image, (int)renderCam->resolution.x*(int)renderCam->resolution.y*sizeof(glm::vec3), cudaMemcpyHostToDevice); + //send mesh info to GPU + /* glm::vec3* d_pbo = NULL; + cudaMalloc((void**)&d_pbo,pbo.size()*sizeof(glm::vec3)); + for(int i = 0;i d_pbo(pbo.size()); + thrust::device_vector d_ibo(ibo.size()); + thrust::device_vector d_nbo(nbo.size()); + for(int i = 0;i>>(renderCam->resolution,cudaimage); + } //package geometry and materials and sent to GPU staticGeom* geomList = new staticGeom[numberOfGeoms]; + //material + material* matList = new material[numberOfGeoms]; + int lightNum = 0; for(int i=0; i0) + lightNum++; newStaticGeom.translation = geoms[i].translations[frame]; newStaticGeom.rotation = geoms[i].rotations[frame]; newStaticGeom.scale = geoms[i].scales[frame]; @@ -187,15 +767,25 @@ void cudaRaytraceCore(uchar4* PBOpos, camera* renderCam, int frame, int iteratio newStaticGeom.inverseTransform = geoms[i].inverseTransforms[frame]; geomList[i] = newStaticGeom; } + int* lightIndex = new int[lightNum]; + int lin = 0; + for(int i = 0;iresolution; @@ -203,12 +793,38 @@ void cudaRaytraceCore(uchar4* PBOpos, camera* renderCam, int frame, int iteratio cam.view = renderCam->views[frame]; cam.up = renderCam->ups[frame]; cam.fov = renderCam->fov; + + // initialize rays + ray* rayPool = NULL; + int numberOfValidRays = (int)renderCam->resolution.x*(int)renderCam->resolution.y; + cudaMalloc((void**)&rayPool,numberOfValidRays*sizeof(ray)); + + glm::vec3* rayColor = NULL; //final color of each ray, this color is independent of each iteration + cudaMalloc((void**)&rayColor,numberOfValidRays*sizeof(glm::vec3)); + + generateInitialRays<<>>(rayPool,rayColor,renderCam->resolution,(float)iterations,cam); + - //kernel launches - for(int bounce = 1; bounce <= 1; ++bounce) + + thrust::device_ptr rayPoolEnd; + // change to 1D, blocksize has nothing with resolution now. + int threadPerBlock = 128;//TODO tweak + int blockPerGrid = (int)ceil((float)numberOfValidRays/threadPerBlock); + for(int i = 0;i>>(renderCam->resolution, (float)iterations, (float)bounce, cam, traceDepth, cudaimage, cudageoms, numberOfGeoms, cudamaterials, numberOfMaterials); + if(numberOfValidRays == 0) break; + blockPerGrid = (int)ceil((float)numberOfValidRays/threadPerBlock); + pathTracer<<>>((float)iterations, cam, i, cudaimage, cudageoms, numberOfGeoms,cudamat,cudaLight, + lightNum,rayPool,numberOfValidRays,rayColor);//,d_pbo,d_ibo,d_nbo); + + //each step, number of valid rays changes + thrust::device_ptr rayPoolStart = thrust::device_pointer_cast(rayPool); + rayPoolEnd = thrust::remove_if(rayPoolStart,rayPoolStart+numberOfValidRays,isDead()); + numberOfValidRays = (int)( rayPoolEnd - rayPoolStart); + //printf("%d ",numberOfValidRays); } + + sendImageToPBO<<>>(PBOpos, renderCam->resolution, cudaimage); //retrieve image from GPU @@ -217,11 +833,19 @@ void cudaRaytraceCore(uchar4* PBOpos, camera* renderCam, int frame, int iteratio //free up stuff, or else we'll leak memory like a madman cudaFree( cudaimage ); cudaFree( cudageoms ); - cudaFree( cudamaterials ); - delete [] geomList; + cudaFree (cudaLight); + cudaFree (cudamat); + cudaFree (rayPool); + cudaFree (rayColor); + /* cudaFree (d_pbo); + cudaFree (d_ibo); + cudaFree (d_nbo);*/ + delete[] matList; + delete[] lightIndex; + delete[] geomList; - // make certain the kernel has completed + // make certain the kernel has completed cudaThreadSynchronize(); checkCUDAError("Kernel failed!"); -} +} \ No newline at end of file diff --git a/src/raytraceKernel.h b/src/raytraceKernel.h index 5fcf5a3..f38f344 100755 --- a/src/raytraceKernel.h +++ b/src/raytraceKernel.h @@ -8,6 +8,7 @@ #ifndef RAYTRACEKERNEL_H #define PATHTRACEKERNEL_H + #include #include #include @@ -20,6 +21,17 @@ #include #endif -void cudaRaytraceCore(uchar4* pos, camera* renderCam, int frame, int iterations, material* materials, int numberOfMaterials, geom* geoms, int numberOfGeoms); +//refer to http://wiki.thrust.googlecode.com/hg-history/312700376feeadec0b1a679a259d66ff8512d5b3/html/group__stream__compaction.html#ga517b17ceafe31a9fc70ac5127bd626de + +struct isDead{ + __host__ __device__ + bool operator()(const ray r) + { + return r.tag == -1; + } +}; + +void cudaRaytraceCore(uchar4* pos, camera* renderCam, int frame, int iterations, material* materials, int numberOfMaterials, geom* geoms,int numberOfGeoms); + //,int numberOfGeoms, std::vector pbo,std::vector ibo, std::vectornbo); #endif diff --git a/src/scene.cpp b/src/scene.cpp index 415d627..f11b902 100755 --- a/src/scene.cpp +++ b/src/scene.cpp @@ -8,7 +8,7 @@ #include "scene.h" #include -scene::scene(string filename){ +scene::scene(string filename){ cout << "Reading scene from " << filename << " ..." << endl; cout << " " << endl; char* fname = (char*)filename.c_str(); @@ -33,7 +33,108 @@ scene::scene(string filename){ } } } +int scene::loadMesh(string fileName,geom& newobj) +{ + fileName = "../../scenes/"+fileName; + cout<<"Read mesh.obj from"<>line; + } + while(line == "v") + { + file>>v_pos[0]>>v_pos[1]>>v_pos[2]; + if(pboIndex == 0) + { + boundingBoxMin = v_pos; + boundingBoxMax = v_pos; + } + else + { + if(v_pos[0]boundingBoxMax[0]) + boundingBoxMax[0] = v_pos[0]; + if(v_pos[1]>boundingBoxMax[1]) + boundingBoxMax[1] = v_pos[1]; + if(v_pos[2]>boundingBoxMax[2]) + boundingBoxMax[2] = v_pos[2]; + } + pbo.push_back(v_pos); + pboIndex ++; + file>>line; + }//while(line == "v") + newobj.boundingBox_min = new glm::vec3(boundingBoxMin); + newobj.boundingBox_max = new glm::vec3(boundingBoxMax); + + while(line!="f") + { + file>>line; + } + std::string faces[3]; + while(line == "f"&&!file.eof()) + { + + file>>faces[0]; + file>>faces[1]; + file>>faces[2]; + + char* verInd = new char[100]; + for(int i = 0;i<3;i++) + { + strcpy(verInd,faces[i].c_str()); + faces[i] = strtok(verInd,"/"); + v_inc[i] = atoi(faces[i].c_str()); + ibo.push_back(v_inc[i]-1); + iboIndex ++; + } + file>>line; + newobj.numberOfTriangle ++; + } + + glm::vec3 edge1(0,0,0); glm::vec3 edge2(0,0,0); + for(int i = 0;i tokens = utilityCore::tokenizeString(line); + // // fileName = atoi(tokens[0].c_str()); + // //} + // ////load mesh infor if the object is of type MESH + // loadMesh(fileName,newObject); + //} + //link material utilityCore::safeGetline(fp_in,line); if(!line.empty() && fp_in.good()){ @@ -112,6 +227,7 @@ int scene::loadObject(string objectid){ utilityCore::safeGetline(fp_in,line); } + //move frames into CUDA readable arrays newObject.translations = new glm::vec3[frameCount]; newObject.rotations = new glm::vec3[frameCount]; diff --git a/src/scene.h b/src/scene.h index 9bfa71f..6934eff 100755 --- a/src/scene.h +++ b/src/scene.h @@ -22,6 +22,7 @@ class scene{ int loadMaterial(string materialid); int loadObject(string objectid); int loadCamera(); + int loadMesh(string fileName,geom& newobj); public: scene(string filename); ~scene(); @@ -29,6 +30,11 @@ class scene{ vector objects; vector materials; camera renderCam; + + vector pbo; + vector ibo; + vector nbo; //face normal + }; #endif diff --git a/src/sceneStructs.h b/src/sceneStructs.h index b10f1cf..79fb73e 100755 --- a/src/sceneStructs.h +++ b/src/sceneStructs.h @@ -10,15 +10,45 @@ #include "cudaMat4.h" #include #include - +#include "utilities.h" +#include +#include enum GEOMTYPE{ SPHERE, CUBE, MESH }; + struct ray { + __host__ __device__ ray() + { + m_index = 1.0; + tag = 1.0; + color_fraction = 1.0;//keep track of how much this ray contribute the final color + } glm::vec3 origin; glm::vec3 direction; + int tag; // -1 if dead, 1 if alive + int pixelId; //each ray stores the pixelId when been initialized + float m_index; + float color_fraction; +}; +struct mesh{ + mesh() + { + triangleNum = 0; + faceNum = 0; + } + int triangleNum; + int faceNum; + glm::vec3* boundingBox_min; + glm::vec3* boundingBox_max; + glm::vec3* pbo; + glm::vec3* ibo; + glm::vec3* nbo; + //thrust::device_vector pbo; }; - struct geom { + geom(){ + numberOfTriangle = 0; + } enum GEOMTYPE type; int materialid; int frames; @@ -27,6 +57,12 @@ struct geom { glm::vec3* scales; cudaMat4* transforms; cudaMat4* inverseTransforms; + int pboIndexOffset; + int iboIndexOffset; + int nboIndexOffset; + int numberOfTriangle; + glm::vec3* boundingBox_min; + glm::vec3* boundingBox_max; }; struct staticGeom { @@ -37,6 +73,13 @@ struct staticGeom { glm::vec3 scale; cudaMat4 transform; cudaMat4 inverseTransform; + int pboIndexOffset; + int iboIndexOffset; + int nboIndexOffset; + int numberOfTriangle; + glm::vec3 boundingBox_min; + glm::vec3 boundingBox_max; + }; struct cameraData { diff --git a/src/utilities.cpp b/src/utilities.cpp index 3fd4b73..ba0c727 100755 --- a/src/utilities.cpp +++ b/src/utilities.cpp @@ -33,6 +33,13 @@ std::string utilityCore::convertIntToString(int number){ return ss.str(); } +std::string utilityCore::convertFloatToString(float number) +{ + std::stringstream ss; + ss<