SCsub 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #!/usr/bin/env python
  2. from misc.utility.scons_hints import *
  3. import methods
  4. Import("env")
  5. env_effects = env.Clone()
  6. # Thirdparty source files
  7. thirdparty_obj = []
  8. thirdparty_dir = "#thirdparty/amd-fsr2/"
  9. thirdparty_sources = ["ffx_assert.cpp", "ffx_fsr2.cpp"]
  10. thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
  11. env_effects.Prepend(CPPPATH=[thirdparty_dir])
  12. def areatex_builder(target, source, env):
  13. buffer = methods.get_buffer(str(source[0]))
  14. with methods.generated_wrapper(str(target[0])) as file:
  15. file.write(f"""\
  16. #define AREATEX_WIDTH 160
  17. #define AREATEX_HEIGHT 560
  18. #define AREATEX_PITCH (AREATEX_WIDTH * 2)
  19. #define AREATEX_SIZE (AREATEX_HEIGHT * AREATEX_PITCH)
  20. inline constexpr const unsigned char area_tex_png[] = {{
  21. {methods.format_buffer(buffer, 1)}
  22. }};
  23. """)
  24. env.CommandNoCache("smaa_area_tex.gen.h", "#thirdparty/smaa/AreaTex.png", env.Run(areatex_builder))
  25. def searchtex_builder(target, source, env):
  26. buffer = methods.get_buffer(str(source[0]))
  27. with methods.generated_wrapper(str(target[0])) as file:
  28. file.write(f"""\
  29. #define SEARCHTEX_WIDTH 64
  30. #define SEARCHTEX_HEIGHT 16
  31. #define SEARCHTEX_PITCH SEARCHTEX_WIDTH
  32. #define SEARCHTEX_SIZE (SEARCHTEX_HEIGHT * SEARCHTEX_PITCH)
  33. inline constexpr const unsigned char search_tex_png[] = {{
  34. {methods.format_buffer(buffer, 1)}
  35. }};
  36. """)
  37. env.CommandNoCache("smaa_search_tex.gen.h", "#thirdparty/smaa/SearchTex.png", env.Run(searchtex_builder))
  38. # This flag doesn't actually control anything GCC specific in FSR2. It determines
  39. # if symbols should be exported, which is not required for Godot.
  40. env_effects.Append(CPPDEFINES=["FFX_GCC"])
  41. env_thirdparty = env_effects.Clone()
  42. env_thirdparty.disable_warnings()
  43. env_thirdparty.add_source_files(thirdparty_obj, thirdparty_sources)
  44. env.servers_sources += thirdparty_obj
  45. # Godot source files
  46. module_obj = []
  47. env_effects.add_source_files(module_obj, "*.cpp")
  48. if env["metal"]:
  49. env_effects.add_source_files(module_obj, "metal_fx.mm")
  50. env.servers_sources += module_obj
  51. # Needed to force rebuilding the module files when the thirdparty library is updated.
  52. env.Depends(module_obj, thirdparty_obj)