EmbedShaders.cmake 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. find_program(PYTHON_EXECUTABLE python3 REQUIRED)
  2. function(ProcessShader shader_file var_name)
  3. execute_process(
  4. COMMAND ${PYTHON_EXECUTABLE} "${R3D_ROOT_PATH}/scripts/glsl_minifier.py" "${shader_file}"
  5. OUTPUT_VARIABLE shader_output
  6. OUTPUT_STRIP_TRAILING_WHITESPACE
  7. )
  8. set("${var_name}" "${shader_output}" PARENT_SCOPE)
  9. endfunction()
  10. function(EmbedShaders generated_shaders_source shaders_source shaders_header)
  11. # Minify and store common shaders
  12. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/common/screen.vs.glsl" VS_COMMON_SCREEN)
  13. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/common/cubemap.vs.glsl" VS_COMMON_CUBEMAP)
  14. # Minify and store generate shaders
  15. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/generate/gaussianBlurDualPass.fs.glsl" FS_GENERATE_GAUSSIAN_BLUR_DUAL_PASS)
  16. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/generate/cubemapFromEquirectangular.fs.glsl" FS_GENERATE_CUBEMAP_FROM_EQUIRECTANGULAR)
  17. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/generate/irradianceConvolution.fs.glsl" FS_GENERATE_IRRADIANCE_CONVOLUTION)
  18. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/generate/prefilter.fs.glsl" FS_GENERATE_PREFILTER)
  19. # Minify and store raster shaders
  20. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/raster/geometry.vs.glsl" VS_RASTER_GEOMETRY)
  21. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/raster/geometry.inst.vs.glsl" VS_RASTER_GEOMETRY_INST)
  22. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/raster/geometry.fs.glsl" FS_RASTER_GEOMETRY)
  23. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/raster/forward.vs.glsl" VS_RASTER_FORWARD)
  24. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/raster/forward.inst.vs.glsl" VS_RASTER_FORWARD_INST)
  25. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/raster/forward.fs.glsl" FS_RASTER_FORWARD)
  26. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/raster/skybox.vs.glsl" VS_RASTER_SKYBOX)
  27. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/raster/skybox.fs.glsl" FS_RASTER_SKYBOX)
  28. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/raster/depth.vs.glsl" VS_RASTER_DEPTH)
  29. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/raster/depth.inst.vs.glsl" VS_RASTER_DEPTH_INST)
  30. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/raster/depth.fs.glsl" FS_RASTER_DEPTH)
  31. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/raster/depthCube.vs.glsl" VS_RASTER_DEPTH_CUBE)
  32. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/raster/depthCube.inst.vs.glsl" VS_RASTER_DEPTH_CUBE_INST)
  33. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/raster/depthCube.fs.glsl" FS_RASTER_DEPTH_CUBE)
  34. # Minify and store screen shaders
  35. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/screen/ssao.fs.glsl" FS_SCREEN_SSAO)
  36. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/screen/ibl.fs.glsl" FS_SCREEN_IBL)
  37. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/screen/lighting.fs.glsl" FS_SCREEN_LIGHTING)
  38. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/screen/scene.fs.glsl" FS_SCREEN_SCENE)
  39. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/screen/bloom.fs.glsl" FS_SCREEN_BLOOM)
  40. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/screen/fog.fs.glsl" FS_SCREEN_FOG)
  41. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/screen/tonemap.fs.glsl" FS_SCREEN_TONEMAP)
  42. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/screen/adjustment.fs.glsl" FS_SCREEN_ADJUSTMENT)
  43. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/screen/fxaa.fs.glsl" FS_SCREEN_FXAA)
  44. ProcessShader("${R3D_ROOT_PATH}/embedded/shaders/screen/color.fs.glsl" FS_SCREEN_COLOR)
  45. # Generate shaders source file
  46. set(GENERATED_SHADERS_SOURCE "${CMAKE_BINARY_DIR}/generated/src/embedded/r3d_shaders.c")
  47. set(${generated_shaders_source} "${GENERATED_SHADERS_SOURCE}" PARENT_SCOPE)
  48. configure_file("${shaders_source}" "${GENERATED_SHADERS_SOURCE}")
  49. endfunction()