add_library(xrRender_GL SHARED)

target_sources(xrRender_GL PRIVATE
    gl_rendertarget_accum_direct.cpp
    gl_rendertarget_build_textures.cpp
    gl_rendertarget.h
    gl_rendertarget_phase_combine.cpp
    gl_rendertarget_phase_flip.cpp
    gl_rendertarget_u_set_rt.cpp
    r2_R_sun.cpp
    r2_test_hw.cpp
    rgl_shaders.cpp
    stdafx.cpp
    stdafx.h
    xrRender_GL.cpp
    ../xrRender/Animation.cpp
    ../xrRender/Animation.h
    ../xrRender/AnimationKeyCalculate.h
    ../xrRender/Blender_CLSID.h
    ../xrRender/Blender.cpp
    ../xrRender/Blender.h
    ../xrRender/Blender_Recorder.cpp
    ../xrRender/Blender_Recorder.h
    ../xrRender/Blender_Recorder_R2.cpp
    ../xrRender/Blender_Recorder_StandartBinding.cpp
    ../xrRender/BufferUtils.h
    ../xrRender/ColorMapManager.cpp
    ../xrRender/ColorMapManager.h
    ../xrRender/D3DUtils.cpp
    ../xrRender/D3DUtils.h
    ../xrRender/D3DXRenderBase.cpp
    ../xrRender/D3DXRenderBase.h
    ../xrRender/DetailFormat.h
    ../xrRender/DetailManager_CACHE.cpp
    ../xrRender/DetailManager.cpp
    ../xrRender/DetailManager_Decompress.cpp
    ../xrRender/DetailManager_soft.cpp
    ../xrRender/DetailManager.h
    ../xrRender/DetailManager_VS.cpp
    ../xrRender/DetailModel.cpp
    ../xrRender/DetailModel.h
    ../xrRender/du_box.cpp
    ../xrRender/du_box.h
    ../xrRender/du_cone.cpp
    ../xrRender/du_cone.h
    ../xrRender/du_cylinder.cpp
    ../xrRender/du_cylinder.h
    ../xrRender/du_sphere.cpp
    ../xrRender/du_sphere.h
    ../xrRender/du_sphere_part.cpp
    ../xrRender/du_sphere_part.h
    ../xrRender/dxDebugRender.cpp
    ../xrRender/dxDebugRender.h
    ../xrRender/dxEnvironmentRender.cpp
    ../xrRender/dxEnvironmentRender.h
    ../xrRender/dxFontRender.cpp
    ../xrRender/dxFontRender.h
    ../xrRender/dxImGuiRender.cpp
    ../xrRender/dxImGuiRender.h
    ../xrRender/dxLensFlareRender.cpp
    ../xrRender/dxLensFlareRender.h
    ../xrRender/dxObjectSpaceRender.cpp
    ../xrRender/dxObjectSpaceRender.h
    ../xrRender/dxParticleCustom.cpp
    ../xrRender/dxParticleCustom.h
    ../xrRender/dxRainRender.cpp
    ../xrRender/dxRainRender.h
    ../xrRender/dxRenderFactory.cpp
    ../xrRender/dxRenderFactory.h
    ../xrRender/dxStatGraphRender.cpp
    ../xrRender/dxStatGraphRender.h
    ../xrRender/dxThunderboltDescRender.cpp
    ../xrRender/dxThunderboltDescRender.h
    ../xrRender/dxThunderboltRender.cpp
    ../xrRender/dxThunderboltRender.h
    ../xrRender/dxUIRender.cpp
    ../xrRender/dxUIRender.h
    ../xrRender/dxUISequenceVideoItem.cpp
    ../xrRender/dxUISequenceVideoItem.h
    ../xrRender/dxUIShader.cpp
    ../xrRender/dxUIShader.h
    ../xrRender/dxWallMarkArray.cpp
    ../xrRender/dxWallMarkArray.h
    ../xrRender/ETextureParams.cpp
    ../xrRender/ETextureParams.h
    ../xrRender/FBasicVisual.cpp
    ../xrRender/FBasicVisual.h
    ../xrRender/FHierrarhyVisual.cpp
    ../xrRender/FHierrarhyVisual.h
    ../xrRender/FLOD.cpp
    ../xrRender/FLOD.h
    ../xrRender/FProgressive.cpp
    ../xrRender/FProgressive.h
    ../xrRender/FSkinned.cpp
    ../xrRender/FSkinned.h
    ../xrRender/FSkinnedTypes.h
    ../xrRender/FTreeVisual.cpp
    ../xrRender/FTreeVisual.h
    ../xrRender/FVF.h
    ../xrRender/FVisual.cpp
    ../xrRender/FVisual.h
    ../xrRender/HOM.cpp
    ../xrRender/HOM.h
    ../xrRender/HWCaps.h
    ../xrRender/IRenderDetailModel.h
    ../xrRender/KinematicAnimatedDefs.h
    ../xrRender/KinematicsAddBoneTransform.hpp
    ../xrRender/light.cpp
    ../xrRender/Light_DB.cpp
    ../xrRender/Light_DB.h
    ../xrRender/light_gi.cpp
    ../xrRender/light_gi.h
    ../xrRender/light.h
    ../xrRender/Light_Package.cpp
    ../xrRender/Light_Package.h
    ../xrRender/Light_Render_Direct_ComputeXFS.cpp
    ../xrRender/Light_Render_Direct.cpp
    ../xrRender/Light_Render_Direct.h
    ../xrRender/light_smapvis.cpp
    ../xrRender/light_smapvis.h
    ../xrRender/LightTrack.cpp
    ../xrRender/LightTrack.h
    ../xrRender/light_vis.cpp
    ../xrRender/ModelPool.cpp
    ../xrRender/ModelPool.h
    ../xrRender/NvTriStrip.cpp
    ../xrRender/NvTriStrip.h
    ../xrRender/NvTriStripObjects.cpp
    ../xrRender/NvTriStripObjects.h
    ../xrRender/occRasterizer_core.cpp
    ../xrRender/occRasterizer.cpp
    ../xrRender/occRasterizer.h
    ../xrRender/ParticleEffect.cpp
    ../xrRender/ParticleEffectDef.cpp
    ../xrRender/ParticleEffectDef.h
    ../xrRender/ParticleEffect.h
    ../xrRender/ParticleGroup.cpp
    ../xrRender/ParticleGroup.h
    ../xrRender/PSLibrary.cpp
    ../xrRender/PSLibrary.h
    ../xrRender/QueryHelper.h
    ../xrRender/R_Backend.cpp
    ../xrRender/R_Backend_DBG.cpp
    ../xrRender/R_Backend.h
    ../xrRender/R_Backend_hemi.cpp
    ../xrRender/R_Backend_hemi.h
    ../xrRender/R_Backend_Runtime.cpp
    ../xrRender/R_Backend_Runtime.h
    ../xrRender/R_Backend_tree.cpp
    ../xrRender/R_Backend_tree.h
    ../xrRender/R_Backend_xform.cpp
    ../xrRender/R_Backend_xform.h
    ../xrRender/r_constants_cache.h
    ../xrRender/r_constants.cpp
    ../xrRender/r_constants.h
    ../xrRender/r__dsgraph_build.cpp
    ../xrRender/r__dsgraph_render.cpp
    ../xrRender/r__dsgraph_render_lods.cpp
    ../xrRender/r__dsgraph_types.h
    ../xrRender/R_DStreams.cpp
    ../xrRender/R_DStreams.h
    ../xrRender/ResourceManager.cpp
    ../xrRender/ResourceManager.h
    ../xrRender/ResourceManager_Loader.cpp
    ../xrRender/ResourceManager_Reset.cpp
    ../xrRender/ResourceManager_Resources.cpp
    #../xrRender/ResourceManager_Scripting.cpp
    ../xrRender/r__occlusion.cpp
    ../xrRender/r__occlusion.h
    ../xrRender/r__pixel_calculator.cpp
    ../xrRender/r__pixel_calculator.h
    ../xrRender/r__sector.cpp
    ../xrRender/r__sector.h
    ../xrRender/r__sector_detect.cpp
    ../xrRender/r__sector_traversal.cpp
    ../xrRender/r_sun_cascades.h
    ../xrRender/r__sync_point.cpp
    ../xrRender/r__sync_point.h
    ../xrRender/Shader.cpp
    ../xrRender/Shader.h
    ../xrRender/ShaderResourceTraits.h
    ../xrRender/SH_Atomic.cpp
    ../xrRender/SH_Atomic.h
    ../xrRender/SH_Constant.cpp
    ../xrRender/SH_Constant.h
    ../xrRender/SH_Matrix.cpp
    ../xrRender/SH_Matrix.h
    ../xrRender/SH_RT.h
    #../xrRender/SH_Texture.cpp
    ../xrRender/SH_Texture.h
    ../xrRender/SkeletonAnimated.cpp
    ../xrRender/SkeletonAnimated.h
    ../xrRender/SkeletonCustom.cpp
    ../xrRender/SkeletonCustom.h
    ../xrRender/SkeletonRigid.cpp
    ../xrRender/SkeletonX.cpp
    ../xrRender/SkeletonX.h
    ../xrRender/SkeletonXSkinXW.h
    ../xrRender/SkeletonXSkinXW_CPP.cpp
    ../xrRender/SkeletonXSkinXW_SSE.cpp
    ../xrRender/SkeletonXVertRender.h
    #../xrRender/stats_manager.cpp
    #../xrRender/stats_manager.h
    #../xrRender/Texture.cpp
    ../xrRender/TextureDescrManager.cpp
    ../xrRender/TextureDescrManager.h
    ../xrRender/tss_def.cpp
    ../xrRender/tss_def.h
    ../xrRender/tss.h
    ../xrRender/VertexCache.cpp
    ../xrRender/VertexCache.h
    ../xrRender/WallmarksEngine.cpp
    ../xrRender/WallmarksEngine.h
    ../xrRender/xr_effgamma.cpp
    ../xrRender/xr_effgamma.h
    ../xrRender/xrRender_console.cpp
    ../xrRender/xrRender_console.h
    ../xrRender/xrStripify.cpp
    ../xrRender/xrStripify.h
    ../xrRender/blenders/blender_bloom_build.cpp
    ../xrRender/blenders/blender_bloom_build.h
    #../xrRender/blenders/Blender_Blur.cpp
    #../xrRender/blenders/Blender_Blur.h
    #../xrRender/blenders/Blender_BmmD.cpp
    ../xrRender/blenders/Blender_BmmD_deferred.cpp
    #../xrRender/blenders/Blender_BmmD.h
    ../xrRender/blenders/blender_combine.cpp
    ../xrRender/blenders/blender_combine.h
    #../xrRender/blenders/Blender_default_aref.cpp
    #../xrRender/blenders/Blender_default_aref.h
    #../xrRender/blenders/BlenderDefault.cpp
    #../xrRender/blenders/BlenderDefault.h
    ../xrRender/blenders/blender_deffer_aref.cpp
    ../xrRender/blenders/blender_deffer_aref.h
    ../xrRender/blenders/blender_deffer_flat.cpp
    ../xrRender/blenders/blender_deffer_flat.h
    ../xrRender/blenders/blender_deffer_model.cpp
    ../xrRender/blenders/blender_deffer_model.h
    #../xrRender/blenders/Blender_detail_still.cpp
    ../xrRender/blenders/Blender_detail_still_deferred.cpp
    #../xrRender/blenders/Blender_detail_still.h
    ../xrRender/blenders/Blender_Editor_Selection.cpp
    ../xrRender/blenders/Blender_Editor_Selection.h
    ../xrRender/blenders/Blender_Editor_Wire.cpp
    ../xrRender/blenders/Blender_Editor_Wire.h
    #../xrRender/blenders/Blender_LaEmB.cpp
    #../xrRender/blenders/Blender_LaEmB.h
    ../xrRender/blenders/blender_light_direct_cascade.cpp
    ../xrRender/blenders/blender_light_direct_cascade.h
    ../xrRender/blenders/blender_light_direct.cpp
    ../xrRender/blenders/blender_light_direct.h
    ../xrRender/blenders/blender_light_mask.cpp
    ../xrRender/blenders/blender_light_mask.h
    ../xrRender/blenders/blender_light_occq.cpp
    ../xrRender/blenders/blender_light_occq.h
    ../xrRender/blenders/blender_light_point.cpp
    ../xrRender/blenders/blender_light_point.h
    ../xrRender/blenders/blender_light_reflected.cpp
    ../xrRender/blenders/blender_light_reflected.h
    ../xrRender/blenders/blender_light_spot.cpp
    ../xrRender/blenders/blender_light_spot.h
    "../xrRender/blenders/Blender_Lm(EbB).cpp"
    "../xrRender/blenders/Blender_Lm(EbB).h"
    ../xrRender/blenders/blender_luminance.cpp
    ../xrRender/blenders/blender_luminance.h
    #../xrRender/blenders/Blender_Model.cpp
    #../xrRender/blenders/Blender_Model_EbB.cpp
    ../xrRender/blenders/Blender_Model_EbB_deferred.cpp
    #../xrRender/blenders/Blender_Model_EbB.h
    #../xrRender/blenders/Blender_Model.h
    #../xrRender/blenders/Blender_Particle.cpp
    ../xrRender/blenders/Blender_Particle_deferred.cpp
    #../xrRender/blenders/Blender_Particle.h
    #../xrRender/blenders/Blender_Screen_GRAY.cpp
    #../xrRender/blenders/Blender_Screen_GRAY.h
    ../xrRender/blenders/Blender_Screen_SET.cpp
    ../xrRender/blenders/Blender_Screen_SET.h
    #../xrRender/blenders/Blender_Shadow_World.cpp
    #../xrRender/blenders/Blender_Shadow_World.h
    ../xrRender/blenders/blender_ssao.cpp
    ../xrRender/blenders/blender_ssao.h
    #../xrRender/blenders/Blender_tree.cpp
    ../xrRender/blenders/Blender_tree_deferred.cpp
    #../xrRender/blenders/Blender_tree.h
    #../xrRender/blenders/Blender_Vertex_aref.cpp
    #../xrRender/blenders/Blender_Vertex_aref.h
    #../xrRender/blenders/Blender_Vertex.cpp
    #../xrRender/blenders/Blender_Vertex.h
    #../xrRender/blenders/dx11MinMaxSMBlender.cpp
    ../xrRender/blenders/dx11MinMaxSMBlender.h
    #../xrRender/blenders/dx11MSAABlender.cpp
    ../xrRender/blenders/dx11MSAABlender.h
    #../xrRender/blenders/dx11RainBlender.cpp
    ../xrRender/blenders/dx11RainBlender.h
    #../xrRender/blenders/dx11HDAOCSBlender.cpp
    #../xrRender/blenders/dx11HDAOCSBlender.h
    #../xrRender/blenders/dx11MinMaxSMBlender.cpp
    #../xrRender/blenders/dx11MinMaxSMBlender.h
    ../xrRender/blenders/glMinMaxSMBlender.cpp
    ../xrRender/blenders/glMSAABlender.cpp
    ../xrRender/blenders/glRainBlender.cpp
    ../xrRender/blenders/uber_deffer.cpp
    ../xrRender/blenders/uber_deffer.h
    ../xrRender_R2/r2.cpp
    ../xrRender_R2/r2.h
    ../xrRender_R2/r2_blenders.cpp
    ../xrRender_R2/r2_loader.cpp
    ../xrRender_R2/r2_R_calculate.cpp
    ../xrRender_R2/r2_R_lights.cpp
    ../xrRender_R2/r2_R_render.cpp
    ../xrRender_R2/r2_R_sun_support.h
    ../xrRender_R2/r2_rendertarget.cpp
    ../xrRender_R2/r2_rendertarget_accum_omnipart_geom.cpp
    ../xrRender_R2/r2_rendertarget_accum_point_geom.cpp
    ../xrRender_R2/r2_rendertarget_accum_reflected.cpp
    ../xrRender_R2/r2_rendertarget_accum_spot_geom.cpp
    ../xrRender_R2/r2_rendertarget_draw_volume.cpp
    ../xrRender_R2/r2_rendertarget_enable_scissor.cpp
    ../xrRender_R2/r2_rendertarget_phase_accumulator.cpp
    ../xrRender_R2/r2_rendertarget_phase_bloom.cpp
    ../xrRender_R2/r2_rendertarget_phase_luminance.cpp
    ../xrRender_R2/r2_rendertarget_phase_PP.cpp
    ../xrRender_R2/r2_rendertarget_phase_smap_S.cpp
    ../xrRender_R2/r2_rendertarget_wallmarks.h
    ../xrRender_R2/r2_types.h
    ../xrRender_R2/r3_R_rain.cpp
    ../xrRender_R2/r3_rendertarget_accum_point.cpp
    ../xrRender_R2/r3_rendertarget_accum_spot.cpp
    ../xrRender_R2/r3_rendertarget_create_minmaxSM.cpp
    ../xrRender_R2/r3_rendertarget_draw_rain.cpp
    ../xrRender_R2/r3_rendertarget_mark_msaa_edges.cpp
    ../xrRender_R2/r3_rendertarget_phase_ssao.cpp
    ../xrRender_R2/r3_rendertarget_phase_smap_D.cpp
    ../xrRender_R2/r3_rendertarget_phase_occq.cpp
    ../xrRender_R2/r3_rendertarget_phase_scene.cpp
    ../xrRender_R2/render_phase_sun.cpp
    ../xrRender_R2/SMAP_Allocator.h
    ../xrRenderGL/Blender_Recorder_GL.cpp
    ../xrRenderGL/CommonTypes.h
    ../xrRenderGL/glBufferUtils.cpp
    ../xrRenderGL/glDetailManager_VS.cpp
    ../xrRenderGL/glHWCaps.cpp
    ../xrRenderGL/glHW.cpp
    ../xrRenderGL/glHW.h
    ../xrRenderGL/glR_Backend_Runtime.h
    ../xrRenderGL/glr_constants.cpp
    ../xrRenderGL/glr_constants_cache.h
    ../xrRenderGL/glr_screenshot.cpp
    ../xrRenderGL/glResourceManager_Resources.cpp
    ../xrRenderGL/glResourceManager_Scripting.cpp
    ../xrRenderGL/glSH_RT.cpp
    ../xrRenderGL/glSH_Texture.cpp
    ../xrRenderGL/glState.cpp
    ../xrRenderGL/glState.h
    ../xrRenderGL/glStateUtils.cpp
    ../xrRenderGL/glStateUtils.h
    ../xrRenderGL/glTexture.cpp
    ../xrRenderGL/glTextureUtils.cpp
    ../xrRenderGL/glTextureUtils.h
    ../../Include/xrRender/animation_blend.h
    ../../Include/xrRender/animation_motion.h
    ../../Include/xrRender/DebugRender.h
    ../../Include/xrRender/DebugShader.h
    ../../Include/xrRender/DrawUtils.h
    ../../Include/xrRender/EnvironmentRender.h
    ../../Include/xrRender/FactoryPtr.h
    ../../Include/xrRender/FontRender.h
    ../../Include/xrRender/KinematicsAnimated.h
    ../../Include/xrRender/Kinematics.h
    ../../Include/xrRender/LensFlareRender.h
    ../../Include/xrRender/ObjectSpaceRender.h
    ../../Include/xrRender/ParticleCustom.h
    ../../Include/xrRender/particles_systems_library_interface.hpp
    ../../Include/xrRender/RainRender.h
    ../../Include/xrRender/RenderDetailModel.h
    ../../Include/xrRender/RenderFactory.h
    ../../Include/xrRender/RenderVisual.h
    ../../Include/xrRender/StatGraphRender.h
    ../../Include/xrRender/ThunderboltDescRender.h
    ../../Include/xrRender/ThunderboltRender.h
    ../../Include/xrRender/UIRender.h
    ../../Include/xrRender/UISequenceVideoItem.h
    ../../Include/xrRender/UIShader.h
    ../../Include/xrRender/WallMarkArray.h
    ../../utils/xrLC_Light/R_light.h
    ../../../sdk/include/glad/gl.c
    ../../../sdk/include/glad/gl.h
    ../../../sdk/include/KHR/khrplatform.h
)

target_include_directories(xrRender_GL
    PRIVATE
    "${CMAKE_CURRENT_SOURCE_DIR}"
    "${CMAKE_SOURCE_DIR}/src"
    "${CMAKE_SOURCE_DIR}/src/Layers/xrRender"
    "${CMAKE_SOURCE_DIR}/src/Include/xrRender"
    "${CMAKE_SOURCE_DIR}/src/Layers/xrRender_R2"
    "${CMAKE_SOURCE_DIR}/sdk/include"
    "${CMAKE_SOURCE_DIR}/sdk/include/DirectXMesh"
    "${CMAKE_SOURCE_DIR}/Externals"
    "${CMAKE_SOURCE_DIR}/Externals/gli"
    "${CMAKE_SOURCE_DIR}/Externals/gli/external"
)

target_link_libraries(xrRender_GL
    PRIVATE
    xrAPI
    xrCDB
    xrCore
    xrEngine
    xrMaterialSystem
    xrParticles
    xrScriptEngine
    xrImGui
)

target_compile_definitions(xrRender_GL
    PRIVATE
    XRRENDER_GL_EXPORTS
    USE_OGL
    PURE_DYNAMIC_CAST
)

set_target_properties(xrRender_GL PROPERTIES
    PREFIX ""
)

target_precompile_headers(xrRender_GL
    PRIVATE
    $<$<COMPILE_LANGUAGE:CXX>:stdafx.h>
)

install(TARGETS xrRender_GL LIBRARY
    DESTINATION "${CMAKE_INSTALL_LIBDIR}"
)
