759ce9b689
Minor patch upgrade. Enabling ray packets results in faster processing of ray streams (i.e. occlusion culling buffer updates) at the cost of slightly larger binary sizes. (cherry picked from commits595cbacdf1
andeb0f67a541
)
101 lines
3.3 KiB
Python
101 lines
3.3 KiB
Python
#!/usr/bin/env python
|
|
|
|
Import("env")
|
|
Import("env_modules")
|
|
|
|
env_raycast = env_modules.Clone()
|
|
|
|
# Thirdparty source files
|
|
|
|
thirdparty_obj = []
|
|
|
|
if env["builtin_embree"]:
|
|
thirdparty_dir = "#thirdparty/embree/"
|
|
|
|
embree_src = [
|
|
"common/sys/sysinfo.cpp",
|
|
"common/sys/alloc.cpp",
|
|
"common/sys/filename.cpp",
|
|
"common/sys/library.cpp",
|
|
"common/sys/thread.cpp",
|
|
"common/sys/string.cpp",
|
|
"common/sys/regression.cpp",
|
|
"common/sys/mutex.cpp",
|
|
"common/sys/condition.cpp",
|
|
"common/sys/barrier.cpp",
|
|
"common/math/constants.cpp",
|
|
"common/simd/sse.cpp",
|
|
"common/lexers/stringstream.cpp",
|
|
"common/lexers/tokenstream.cpp",
|
|
"common/tasking/taskschedulerinternal.cpp",
|
|
"kernels/common/device.cpp",
|
|
"kernels/common/stat.cpp",
|
|
"kernels/common/acceln.cpp",
|
|
"kernels/common/accelset.cpp",
|
|
"kernels/common/state.cpp",
|
|
"kernels/common/rtcore.cpp",
|
|
"kernels/common/rtcore_builder.cpp",
|
|
"kernels/common/scene.cpp",
|
|
"kernels/common/alloc.cpp",
|
|
"kernels/common/geometry.cpp",
|
|
"kernels/common/scene_triangle_mesh.cpp",
|
|
"kernels/geometry/primitive4.cpp",
|
|
"kernels/builders/primrefgen.cpp",
|
|
"kernels/bvh/bvh.cpp",
|
|
"kernels/bvh/bvh_statistics.cpp",
|
|
"kernels/bvh/bvh4_factory.cpp",
|
|
"kernels/bvh/bvh8_factory.cpp",
|
|
"kernels/bvh/bvh_collider.cpp",
|
|
"kernels/bvh/bvh_rotate.cpp",
|
|
"kernels/bvh/bvh_refit.cpp",
|
|
"kernels/bvh/bvh_builder.cpp",
|
|
"kernels/bvh/bvh_builder_morton.cpp",
|
|
"kernels/bvh/bvh_builder_sah.cpp",
|
|
"kernels/bvh/bvh_builder_sah_spatial.cpp",
|
|
"kernels/bvh/bvh_builder_sah_mb.cpp",
|
|
"kernels/bvh/bvh_builder_twolevel.cpp",
|
|
"kernels/bvh/bvh_intersector1_bvh4.cpp",
|
|
"kernels/bvh/bvh_intersector_hybrid4_bvh4.cpp",
|
|
"kernels/bvh/bvh_intersector_stream_bvh4.cpp",
|
|
"kernels/bvh/bvh_intersector_stream_filters.cpp",
|
|
]
|
|
|
|
thirdparty_sources = [thirdparty_dir + file for file in embree_src]
|
|
|
|
env_raycast.Prepend(CPPPATH=[thirdparty_dir, thirdparty_dir + "include"])
|
|
env_raycast.Append(CPPDEFINES=["EMBREE_TARGET_SSE2", "EMBREE_LOWEST_ISA", "TASKING_INTERNAL"])
|
|
env_raycast.AppendUnique(CPPDEFINES=["NDEBUG"]) # No assert() even in debug builds.
|
|
|
|
if not env.msvc:
|
|
if env["arch"] in ["x86", "x86_64"]:
|
|
env_raycast.Append(CPPFLAGS=["-msse2", "-mxsave"])
|
|
|
|
if env["platform"] == "windows":
|
|
env_raycast.Append(CPPFLAGS=["-mstackrealign"])
|
|
|
|
if env["platform"] == "windows":
|
|
if env.msvc:
|
|
env.Append(LINKFLAGS=["psapi.lib"])
|
|
else:
|
|
env.Append(LIBS=["psapi"])
|
|
|
|
env_thirdparty = env_raycast.Clone()
|
|
env_thirdparty.disable_warnings()
|
|
env_thirdparty.add_source_files(thirdparty_obj, thirdparty_sources)
|
|
|
|
if not env["arch"] in ["x86", "x86_64"] or env.msvc:
|
|
# Embree needs those, it will automatically use SSE2NEON in ARM
|
|
env_thirdparty.Append(CPPDEFINES=["__SSE2__", "__SSE__"])
|
|
|
|
env.modules_sources += thirdparty_obj
|
|
|
|
|
|
# Godot source files
|
|
|
|
module_obj = []
|
|
|
|
env_raycast.add_source_files(module_obj, "*.cpp")
|
|
env.modules_sources += module_obj
|
|
|
|
# Needed to force rebuilding the module files when the thirdparty library is updated.
|
|
env.Depends(module_obj, thirdparty_obj)
|