[SOLVED]:SkyX/Caelum and GL 3+, best way forward? Topic is solved

Problems building or running the engine, queries about how to use features etc.
RevenantStorm
Gnoblar
Posts: 5
Joined: Tue Oct 29, 2024 12:10 am
x 1

[SOLVED]:SkyX/Caelum and GL 3+, best way forward?

Post by RevenantStorm »

Ogre Version: 13.6.5
Operating System: Windows 11
Render System: OpenGL/OpenGL 3+

I've nearly finished migrating my project's material scripts from traditional diffuse/specular to PBR, and from using the OpenGL renderer to GL3+.

One of the few remaining tasks is getting the sky to render properly. I have been using SkyX in my project (v0.4.0.7), which still works fine with the OpenGL renderer even though that project seems to have been dead for about a decade. Problem is that when I switch to GL3+, the sky disappears - only the viewport color is visible.

My first guess was shader incompatibility between GL and GL3+. To test, I tried setting gl_FragColor in the SkyX_Skydome.fragment shader to pure magenta, and while that indeed makes the sky magenta with the OpenGL renderer, there's no change on the GL3+ side.

Admittedly, I know next to nothing about shader programming, but I remember reading something about how GL shader matrix order switched from row-major to column-major order at some version. I suspect that would mess with transformations and perhaps translate/scale the skydome such that it is invisible, but given my lack of expertise with shaders, I decided not to follow that rabbit hole and instead take a look at Caelum, as that seems to be the solution the community has thrown its weight behind, and has the distinct advantage of still being supported.

I downloaded and built the Caelum component, and while it also renders correctly with the OpenGL renderer, I ran into a different problem in that it uses Cg shaders, which aside from being old and deprecated technology, don't seem to be entirely supported by GL3+.

That leaves me with three options, as I see it:

  • Dig into the SkyX shaders and attempt to figure out what's going on and/or modernize them (unless the problem is glaringly obvious, this could take a while)

  • Switch from SkyX to Caelum, convert Caelum Cg shaders to GLSL using a variant of that nVIDIA toolkit/Python script that's been floating around the Internet

  • Use one of Ogre's built-in skydomes and say goodbye to volumetric clouds, Rayleigh scattering, day/night cycles and other luxuries :(

Which option makes the most sense?

Here's the ogre.log from the Caelum sample project:

Code: Select all

20:16:25: Creating resource group General
20:16:25: Creating resource group OgreInternal
20:16:25: Creating resource group OgreAutodetect
20:16:25: SceneManagerFactory for type 'DefaultSceneManager' registered.
20:16:25: Registering ResourceManager for type Material
20:16:25: Registering ResourceManager for type Mesh
20:16:25: Registering ResourceManager for type Skeleton
20:16:25: MovableObjectFactory for type 'ParticleSystem' registered.
20:16:25: ArchiveFactory for type 'FileSystem' registered
20:16:25: ArchiveFactory for type 'Zip' registered
20:16:25: ArchiveFactory for type 'EmbeddedZip' registered
20:16:25: DDS codec registering
20:16:25: ETC codec registering
20:16:25: ASTC codec registering
20:16:25: Registering ResourceManager for type GpuProgram
20:16:25: Registering ResourceManager for type Compositor
20:16:25: MovableObjectFactory for type 'Entity' registered.
20:16:25: MovableObjectFactory for type 'Light' registered.
20:16:25: MovableObjectFactory for type 'BillboardSet' registered.
20:16:25: MovableObjectFactory for type 'ManualObject' registered.
20:16:25: MovableObjectFactory for type 'BillboardChain' registered.
20:16:25: MovableObjectFactory for type 'RibbonTrail' registered.
20:16:25: MovableObjectFactory for type 'StaticGeometry' registered.
20:16:25: MovableObjectFactory for type 'Rectangle2D' registered.
20:16:25: Loading library E:/||||||||||/Dependencies/ogre-caelum-master/bin/Debug/.\RenderSystem_GL3Plus_d.dll
20:16:25: Installing plugin: GL 3+ RenderSystem
20:16:25: OpenGL 3+ Rendering Subsystem created.
20:16:26: Plugin successfully installed
20:16:26: Loading library E:/||||||||||/Dependencies/ogre-caelum-master/bin/Debug/.\RenderSystem_GL_d.dll
20:16:28: Installing plugin: GL RenderSystem
20:16:28: OpenGL Rendering Subsystem created.
20:16:28: Plugin successfully installed
20:16:28: Loading library E:/||||||||||/Dependencies/ogre-caelum-master/bin/Debug/.\Codec_STBI_d.dll
20:16:29: stb_image - v2.28 - public domain image loader
20:16:29: Supported formats: jpeg,jpg,png,bmp,psd,tga,gif,pic,ppm,pgm,hdr
20:16:29: *-*-* OGRE Initialising
20:16:29: *-*-* Version 13.6.5 (Tsathoggua)
20:16:29: OverlayElementFactory for type Panel registered.
20:16:29: OverlayElementFactory for type BorderPanel registered.
20:16:29: OverlayElementFactory for type TextArea registered.
20:16:29: Registering ResourceManager for type Font
20:16:29: CPU Identifier & Features
20:16:29: -------------------------
20:16:29:  *   CPU ID: GenuineIntel: 13th Gen Intel(R) Core(TM) i5-13600K
20:16:29:  *          SSE: yes
20:16:29:  *         SSE2: yes
20:16:29:  *         SSE3: yes
20:16:29:  *        SSE41: yes
20:16:29:  *        SSE42: yes
20:16:29:  *          MMX: yes
20:16:29:  *       MMXEXT: yes
20:16:29:  *        3DNOW: no
20:16:29:  *     3DNOWEXT: no
20:16:29:  *         CMOV: yes
20:16:29:  *          TSC: yes
20:16:29:  *INVARIANT TSC: yes
20:16:29:  *          FPU: yes
20:16:29:  *          PRO: yes
20:16:29:  *           HT: no
20:16:29: -------------------------
20:16:29: *** Starting Win32GL Subsystem ***
20:16:29: RenderSystem::_createRenderWindow "Ogre3D", 640x480 windowed  miscParams: FSAA=0 colourDepth= displayFrequency=N/A externalWindowHandle=14817892 gamma=No sdlwin=1972875722024 vsync=Yes vsyncInterval=1 
20:16:29: Supported WGL extensions: WGL_EXT_depth_float WGL_ARB_buffer_region WGL_ARB_extensions_string WGL_ARB_make_current_read WGL_ARB_pixel_format WGL_ARB_pbuffer WGL_EXT_extensions_string WGL_EXT_swap_control WGL_ARB_multisample WGL_ARB_pixel_format_float WGL_ARB_framebuffer_sRGB WGL_ARB_create_context WGL_ARB_create_context_profile WGL_EXT_pixel_format_packed_float WGL_EXT_create_context_es_profile WGL_EXT_create_context_es2_profile WGL_NV_DX_interop WGL_NV_DX_interop2 WGL_ARB_robustness_application_isolation WGL_ARB_robustness_share_group_isolation WGL_ARB_create_context_robustness WGL_ARB_context_flush_control 
20:16:29: GL_VERSION = 4.6.0.0
20:16:29: GL_VENDOR = Intel
20:16:29: GL_RENDERER = Intel(R) UHD Graphics 770
20:16:29: GL_EXTENSIONS = GL_3DFX_texture_compression_FXT1 GL_AMD_depth_clamp_separate GL_AMD_vertex_shader_layer GL_AMD_vertex_shader_viewport_index GL_ARB_ES2_compatibility GL_ARB_ES3_1_compatibility GL_ARB_ES3_compatibility GL_ARB_arrays_of_arrays GL_ARB_base_instance GL_ARB_bindless_texture GL_ARB_blend_func_extended GL_ARB_buffer_storage GL_ARB_cl_event GL_ARB_clear_buffer_object GL_ARB_clear_texture GL_ARB_clip_control GL_ARB_color_buffer_float GL_ARB_compressed_texture_pixel_storage GL_ARB_compute_shader GL_ARB_conditional_render_inverted GL_ARB_conservative_depth GL_ARB_copy_buffer GL_ARB_copy_image GL_ARB_cull_distance GL_ARB_debug_output GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_derivative_control GL_ARB_direct_state_access GL_ARB_draw_buffers GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_draw_indirect GL_ARB_draw_instanced GL_ARB_enhanced_layouts GL_ARB_explicit_attrib_location GL_ARB_explicit_uniform_location GL_ARB_fragment_coord_conventions GL_ARB_fragment_layer_viewport GL_ARB_fragment_program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader GL_ARB_fragment_shader_interlock GL_ARB_framebuffer_no_attachments GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_geometry_shader4 GL_ARB_get_program_binary GL_ARB_get_texture_sub_image GL_ARB_gl_spirv GL_ARB_gpu_shader5 GL_ARB_gpu_shader_fp64 GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_indirect_parameters GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_internalformat_query2 GL_ARB_invalidate_subdata GL_ARB_map_buffer_alignment GL_ARB_map_buffer_range GL_ARB_multi_bind GL_ARB_multi_draw_indirect GL_ARB_multisample GL_ARB_multitexture GL_ARB_occlusion_query GL_ARB_occlusion_query2 GL_ARB_pipeline_statistics_query GL_ARB_pixel_buffer_object GL_ARB_point_parameters GL_ARB_point_sprite GL_ARB_polygon_offset_clamp GL_ARB_post_depth_coverage GL_ARB_program_interface_query GL_ARB_provoking_vertex GL_ARB_query_buffer_object GL_ARB_robust_buffer_access_behavior GL_ARB_robustness GL_ARB_robustness_isolation GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_seamless_cubemap_per_texture GL_ARB_separate_shader_objects GL_ARB_shader_atomic_counter_ops GL_ARB_shader_atomic_counters GL_ARB_shader_bit_encoding GL_ARB_shader_draw_parameters GL_ARB_shader_group_vote GL_ARB_shader_image_load_store GL_ARB_shader_image_size GL_ARB_shader_objects GL_ARB_shader_precision GL_ARB_shader_stencil_export GL_ARB_shader_storage_buffer_object GL_ARB_shader_subroutine GL_ARB_shader_texture_image_samples GL_ARB_shading_language_100 GL_ARB_shading_language_420pack GL_ARB_shading_language_packing GL_ARB_shadow GL_ARB_spirv_extensions GL_ARB_stencil_texturing GL_ARB_sync GL_ARB_tessellation_shader GL_ARB_texture_barrier GL_ARB_texture_border_clamp GL_ARB_texture_buffer_object GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_buffer_range GL_ARB_texture_compression GL_ARB_texture_compression_bptc GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map GL_ARB_texture_cube_map_array GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_filter_anisotropic GL_ARB_texture_float GL_ARB_texture_gather GL_ARB_texture_mirror_clamp_to_edge GL_ARB_texture_mirrored_repeat GL_ARB_texture_multisample GL_ARB_texture_non_power_of_two GL_ARB_texture_query_levels GL_ARB_texture_query_lod GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_texture_rgb10_a2ui GL_ARB_texture_stencil8 GL_ARB_texture_storage GL_ARB_texture_storage_multisample GL_ARB_texture_swizzle GL_ARB_texture_view GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_transform_feedback_instanced GL_ARB_transform_feedback_overflow_query GL_ARB_transpose_matrix GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_attrib_64bit GL_ARB_vertex_attrib_binding GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_vertex_type_10f_11f_11f_rev GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_ARB_window_pos GL_ATI_separate_stencil GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_clip_volume_hint GL_EXT_compiled_vertex_array GL_EXT_depth_bounds_test GL_EXT_direct_state_access GL_EXT_draw_buffers2 GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_object GL_EXT_geometry_shader4 GL_EXT_gpu_program_parameters GL_EXT_gpu_shader4 GL_EXT_memory_object GL_EXT_memory_object_win32 GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_packed_pixels GL_EXT_polygon_offset_clamp GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_semaphore GL_EXT_semaphore_win32 GL_EXT_separate_specular_color GL_EXT_shader_framebuffer_fetch GL_EXT_shader_integer_mix GL_EXT_shadow_funcs GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_texture3D GL_EXT_texture_array GL_EXT_texture_compression_s3tc GL_EXT_texture_edge_clamp GL_EXT_texture_env_add GL_EXT_texture_env_combine GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_lod_bias GL_EXT_texture_rectangle GL_EXT_texture_sRGB GL_EXT_texture_sRGB_decode GL_EXT_texture_shared_exponent GL_EXT_texture_snorm GL_EXT_texture_storage GL_EXT_texture_swizzle GL_EXT_timer_query GL_EXT_transform_feedback GL_IBM_texture_mirrored_repeat GL_INTEL_conservative_rasterization GL_INTEL_fragment_shader_ordering GL_INTEL_framebuffer_CMAA GL_INTEL_map_texture GL_INTEL_multi_rate_fragment_shader GL_INTEL_performance_query GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_KHR_context_flush_control GL_KHR_debug GL_KHR_no_error GL_KHR_shader_subgroup GL_KHR_shader_subgroup_arithmetic GL_KHR_shader_subgroup_ballot GL_KHR_shader_subgroup_basic GL_KHR_shader_subgroup_clustered GL_KHR_shader_subgroup_quad GL_KHR_shader_subgroup_shuffle GL_KHR_shader_subgroup_shuffle_relative GL_KHR_shader_subgroup_vote GL_KHR_texture_compression_astc_ldr GL_NV_blend_square GL_NV_conditional_render GL_NV_primitive_restart GL_NV_texgen_reflection GL_NV_timeline_semaphore GL_OVR_multiview GL_SGIS_generate_mipmap GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod GL_SUN_multi_draw_arrays GL_WIN_swap_hint WGL_EXT_swap_control 
20:16:29: **************************************
20:16:29: ***   OpenGL 3+ Renderer Started   ***
20:16:29: **************************************
20:16:29: FBO PF_UNKNOWN depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_L8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_L16 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_A8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_BYTE_LA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R5G6B5 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_B5G6R5 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_A4R4G4B4 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_A1R5G5B5 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8G8B8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_B8G8R8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_A8R8G8B8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_A8B8G8R8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_B8G8R8A8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_A2R10G10B10 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_A2B10G10R10 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_FLOAT16_RGB depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_FLOAT16_RGBA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_FLOAT32_RGB depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_FLOAT32_RGBA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_X8R8G8B8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_X8B8G8R8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8G8B8A8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_DEPTH16 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_SHORT_RGBA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R3G3B2 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_FLOAT16_R depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_FLOAT32_R depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_SHORT_GR depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_FLOAT16_GR depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_FLOAT32_GR depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_SHORT_RGB depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R11G11B10_FLOAT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8_UINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8G8_UINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8G8B8_UINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8G8B8A8_UINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R16_UINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R16G16_UINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R16G16B16_UINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R16G16B16A16_UINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R32_UINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R32G32_UINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R32G32B32_UINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R32G32B32A32_UINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8_SINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8G8_SINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8G8B8_SINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8G8B8A8_SINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R16_SINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R16G16_SINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R16G16B16_SINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R16G16B16A16_SINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R32_SINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R32G32_SINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R32G32B32_SINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R32G32B32A32_SINT depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8G8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8_SNORM depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8G8_SNORM depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8G8B8_SNORM depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R8G8B8A8_SNORM depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R16_SNORM depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R16G16_SNORM depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R16G16B16_SNORM depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_R16G16B16A16_SNORM depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_DEPTH32 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_DEPTH32F depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: FBO PF_DEPTH24_STENCIL8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D16S1 D16S4 D16S8 D16S16 D24S0 D24S1 D24S4 D24S8 D24S16 D32S0 D32S1 D32S4 D32S8 D32S16 D32S0 D32S1 D32S4 D32S8 D32S16 Packed-D24S8 Packed-D32S8 
20:16:29: [GL] : Valid FBO targets PF_UNKNOWN PF_L8 PF_L16 PF_A8 PF_BYTE_LA PF_R5G6B5 PF_B5G6R5 PF_A4R4G4B4 PF_A1R5G5B5 PF_R8G8B8 PF_B8G8R8 PF_A8R8G8B8 PF_A8B8G8R8 PF_B8G8R8A8 PF_A2R10G10B10 PF_A2B10G10R10 PF_FLOAT16_RGB PF_FLOAT16_RGBA PF_FLOAT32_RGB PF_FLOAT32_RGBA PF_X8R8G8B8 PF_X8B8G8R8 PF_R8G8B8A8 PF_DEPTH16 PF_SHORT_RGBA PF_R3G3B2 PF_FLOAT16_R PF_FLOAT32_R PF_SHORT_GR PF_FLOAT16_GR PF_FLOAT32_GR PF_SHORT_RGB PF_R11G11B10_FLOAT PF_R8_UINT PF_R8G8_UINT PF_R8G8B8_UINT PF_R8G8B8A8_UINT PF_R16_UINT PF_R16G16_UINT PF_R16G16B16_UINT PF_R16G16B16A16_UINT PF_R32_UINT PF_R32G32_UINT PF_R32G32B32_UINT PF_R32G32B32A32_UINT PF_R8_SINT PF_R8G8_SINT PF_R8G8B8_SINT PF_R8G8B8A8_SINT PF_R16_SINT PF_R16G16_SINT PF_R16G16B16_SINT PF_R16G16B16A16_SINT PF_R32_SINT PF_R32G32_SINT PF_R32G32B32_SINT PF_R32G32B32A32_SINT PF_R8 PF_R8G8 PF_R8_SNORM PF_R8G8_SNORM PF_R8G8B8_SNORM PF_R8G8B8A8_SNORM PF_R16_SNORM PF_R16G16_SNORM PF_R16G16B16_SNORM PF_R16G16B16A16_SNORM PF_DEPTH32 PF_DEPTH32F PF_DEPTH24_STENCIL8 
20:16:29: Registering ResourceManager for type Texture
20:16:29: RenderSystem capabilities
20:16:29: -------------------------
20:16:29: RenderSystem Name: OpenGL 3+ Rendering Subsystem
20:16:29: GPU Vendor: intel
20:16:29: Device Name: Intel(R) UHD Graphics 770
20:16:29: Driver Version: 4.6.0.0
20:16:29:  * Fixed function pipeline: no
20:16:29:  * 32-bit index buffers: yes
20:16:29:  * Hardware stencil buffer: yes
20:16:29:    - Two sided stencil support: yes
20:16:29:    - Wrap stencil values: yes
20:16:29:  * Vertex programs: yes
20:16:29:    - Number of constant 4-vectors: 1024
20:16:29:  * Fragment programs: yes
20:16:29:    - Number of constant 4-vectors: 1024
20:16:29:  * Geometry programs: yes
20:16:29:    - Number of constant 4-vectors: 1024
20:16:29:  * Tessellation Hull programs: yes
20:16:29:    - Number of constant 4-vectors: 1024
20:16:29:  * Tessellation Domain programs: yes
20:16:29:    - Number of constant 4-vectors: 1024
20:16:29:  * Compute programs: yes
20:16:29:    - Number of constant 4-vectors: 4096
20:16:29:  * Supported Shader Profiles: gl_spirv glsl glsl130 glsl140 glsl150 glsl330 glsl400 glsl410 glsl420 glsl430 glsl440 glsl450 glsl460
20:16:29:  * Read-back compiled shader: yes
20:16:29:  * Number of vertex attributes: 16
20:16:29:  * Textures
20:16:29:    - Number of texture units: 16
20:16:29:    - Floating point: yes
20:16:29:    - Non-power-of-two: yes
20:16:29:    - 1D textures: yes
20:16:29:    - 2D array textures: yes
20:16:29:    - 3D textures: yes
20:16:29:    - Anisotropic filtering: yes
20:16:29:  * Texture Compression: yes
20:16:29:    - DXT: yes
20:16:29:    - VTC: no
20:16:29:    - PVRTC: no
20:16:29:    - ATC: no
20:16:29:    - ETC1: no
20:16:29:    - ETC2: yes
20:16:29:    - BC4/BC5: yes
20:16:29:    - BC6H/BC7: yes
20:16:29:    - ASTC: yes
20:16:29:    - Automatic mipmap generation: yes
20:16:29:  * Vertex Buffers
20:16:29:    - Render to Vertex Buffer: yes
20:16:29:    - Instance Data: yes
20:16:29:    - Primitive Restart: yes
20:16:29:    - INT_10_10_10_2_NORM element type: yes
20:16:29:  * Vertex texture fetch: yes
20:16:29:    - Max vertex textures: 16
20:16:29:    - Vertex textures shared: no
20:16:29:  * Read/Write Buffers: yes
20:16:29:  * Hardware Occlusion Query: yes
20:16:29:  * User clip planes: yes
20:16:29:  * Depth clamping: yes
20:16:29:  * Hardware render-to-texture: yes
20:16:29:    - Multiple Render Targets: 8
20:16:29:    - With different bit depths: yes
20:16:29:  * Point Sprites: yes
20:16:29:    - Extended parameters: yes
20:16:29:    - Max Size: 255
20:16:29:  * Wide Lines: yes
20:16:29:  * Hardware Gamma: yes
20:16:29:  * PBuffer support: no
20:16:29:  * Vertex Array Objects: yes
20:16:29:  * Separate shader objects: yes
20:16:29:    - redeclare GLSL interface block: yes
20:16:29:  * Debugging/ profiling events: yes
20:16:29:  * Map buffer storage: yes
20:16:29: DefaultWorkQueue('Root') initialising on thread 61236.
20:16:29: Particle Renderer Type 'billboard' registered
20:16:29: DefaultWorkQueue('Root')::WorkerFunc - thread 34496 starting.
20:16:29: DefaultWorkQueue('Root')::WorkerFunc - thread 46748 starting.
20:16:29: Parsing 'E:\||||||||||\Dependencies\ogre-caelum-master\bin\Debug\resources.cfg'
20:16:29: Creating resource group Caelum
20:16:29: Added resource location 'E:/||||||||||/Dependencies/ogre-caelum-master/main/resources' of type 'FileSystem' to resource group 'Caelum'
20:16:29: Added resource location 'E:/||||||||||/Dependencies/ogre-13.6.5/build/Media' of type 'FileSystem' to resource group 'General'
20:16:29: Added resource location 'E:/||||||||||/Dependencies/ogre-13.6.5/build/Media/Main' of type 'FileSystem' to resource group 'General'
20:16:29: Added resource location 'E:/||||||||||/Dependencies/ogre-13.6.5/build/Media/RTShaderLib/GLSL' of type 'FileSystem' to resource group 'General'
20:16:29: Added resource location 'E:/||||||||||/Dependencies/ogre-caelum-master/samples/resources' of type 'FileSystem' to resource group 'General'
20:16:29: Added resource location 'E:/||||||||||/Dependencies/ogre-13.6.5/build/sdk/Media/Main' of type 'FileSystem' to resource group 'OgreInternal'
20:16:29: Added resource location 'E:/||||||||||/Dependencies/ogre-13.6.5/build/sdk/Media/Terrain' of type 'FileSystem' to resource group 'OgreInternal'
20:16:29: Added resource location 'E:/||||||||||/Dependencies/ogre-13.6.5/build/sdk/Media/RTShaderLib/GLSL' of type 'FileSystem' to resource group 'OgreInternal'
20:16:29: Added resource location 'E:/||||||||||/Dependencies/ogre-13.6.5/build/sdk/Media/RTShaderLib/HLSL_Cg' of type 'FileSystem' to resource group 'OgreInternal'
20:16:29: Caelum plugin version 0.6.4 installed
20:16:29: Registering ResourceManager for type PropertyScript
20:16:29: Parsing scripts for resource group Caelum
20:16:29: Parsing script DepthRender.program
20:16:29: Parsing script GroundFog.program
20:16:29: Parsing script Haze.program
20:16:29: Parsing script MinimalCompositorVP.program
20:16:29: Parsing script DepthComposer.material
20:16:29: Parsing script GroundFog.material
20:16:29: Parsing script LayeredClouds.material
20:16:29: Parsing script moon.material
20:16:29: Parsing script PointStarfield.material
20:16:29: Parsing script Precipitation.material
20:16:29: Parsing script SkyDome.material
20:16:29: Parsing script Starfield.material
20:16:29: Parsing script Sun.material
20:16:29: Parsing script DepthComposer.compositor
20:16:29: Parsing script Precipitation.compositor
20:16:29: Finished parsing scripts for resource group Caelum
20:16:29: Creating resources for group Caelum
20:16:29: All done
20:16:29: Parsing scripts for resource group General
20:16:29: Parsing script ShadowVolumeExtude.program
20:16:29: 'ShadowBlend.vert' WARNING: 1:1: '' :  #version directive missing
20:16:29: 'ShadowBlend.frag' WARNING: 1:1: '' :  #version directive missing
20:16:29: Parsing script Shadow.material
20:16:29: 'ShadowExtrudeDirLightFinite.vert' WARNING: 1:1: '' :  #version directive missing
20:16:29: 'ShadowExtrudeDirLight.vert' WARNING: 1:1: '' :  #version directive missing
20:16:29: Parsing script CaelumSample.material
20:16:29: Parsing script TestSkyScript.os
20:16:29: Finished parsing scripts for resource group General
20:16:29: Creating resources for group General
20:16:29: All done
20:16:29: Parsing scripts for resource group OgreAutodetect
20:16:29: Finished parsing scripts for resource group OgreAutodetect
20:16:29: Creating resources for group OgreAutodetect
20:16:29: All done
20:16:29: Parsing scripts for resource group OgreInternal
20:16:29: Finished parsing scripts for resource group OgreInternal
20:16:29: Creating resources for group OgreInternal
20:16:29: All done
20:16:29: Mesh: Loading TudorHouse.mesh.
20:16:29: Warning: TudorHouse.mesh uses an old format [MeshSerializer_v1.40]; upgrade with the OgreMeshUpgrader tool
20:16:29: Warning: material Examples/TudorHouse has no supportable Techniques and will be blank. Explanation: 
Pass 0: vertex program CaelumSample/BasicVP cannot be used - not supported.
Pass 0: vertex program CaelumSample/PSSM/AmbientVP cannot be used - not supported.

20:16:29: Caelum: Initialising Caelum system...
20:16:29: Caelum: Creating caelum sub-components.
20:16:29: Texture 'EarthClearSky2.png': Loading 1 faces(PF_A8B8G8R8,64x64x1) Internal format is PF_A8B8G8R8,64x64x1.
20:16:29: Caelum: Creating CaelumSphericDome sphere mesh resource...
20:16:29: Caelum: generateSphericDome DONE
20:16:29: Texture 'sun_disc.png': Loading 1 faces(PF_A8B8G8R8,128x128x1) Internal format is PF_A8B8G8R8,128x128x1.
20:16:29: Warning: material Caelum/PhaseMoon/000001CB58038560 has no supportable Techniques and will be blank. Explanation: 
Pass 0: vertex program Caelum/PhaseMoonVP cannot be used - not supported.

20:16:29: Caelum: Failed to initialize moon: UnsupportedException: Can't load material "Caelum/PhaseMoon": Pass 0: vertex program Caelum/PhaseMoonVP cannot be used - not supported.
 in Caelum at E:\||||||||||\Dependencies\ogre-caelum-master\main\src\InternalUtilities.cpp (line 86)
20:16:29: Warning: material Caelum/StarPoint/000001CB5FF58100 has no supportable Techniques and will be blank. Explanation: 
Pass 0: vertex program Caelum/StarPointVP cannot be used - not supported.

20:16:29: Caelum: Failed to initialize starfield: UnsupportedException: Can't load material "Caelum/StarPoint": Pass 0: vertex program Caelum/StarPointVP cannot be used - not supported.
 in Caelum at E:\||||||||||\Dependencies\ogre-caelum-master\main\src\InternalUtilities.cpp (line 86)
20:16:29: Warning: material Caelum/FlatCloudLayer/Material000001CB5FF31EB0 has no supportable Techniques and will be blank. Explanation: 
Pass 0: vertex program CaelumLayeredCloudsVP cannot be used - not supported.

20:16:29: Caelum: Failed to initialize clouds: UnsupportedException: Can't load material "CaelumLayeredClouds": Pass 0: vertex program CaelumLayeredCloudsVP cannot be used - not supported.
 in Caelum at E:\||||||||||\Dependencies\ogre-caelum-master\main\src\InternalUtilities.cpp (line 86)
20:16:29: Caelum: DONE initializing
20:16:30: 09de91ea4a8a3d7e9a88395d5b918731_VS
d04d8a480e9a739b8e0bab712fbc8afe_FS
GLSL program pipeline validation result: 
WARNING: 1:1: '' :  #version directive missing
20:16:30: 79903ded0e5ecbb5f1f5d64bdb373a31_VS
0c6406765d7f117faa2fe9816e871421_FS
GLSL program pipeline validation result: 
WARNING: 1:1: '' :  #version directive missing
20:16:39: Caelum: Shutting down Caelum system...
20:16:39: Caelum: Delete UniversalClock
20:16:39: Unregistering ResourceManager for type Font
20:16:39: DefaultWorkQueue('Root') shutting down on thread 61236.
20:16:39: DefaultWorkQueue('Root')::WorkerFunc - thread 46748 stopped.
20:16:39: DefaultWorkQueue('Root')::WorkerFunc - thread 34496 stopped.
20:16:39: *-*-* OGRE Shutdown
20:16:39: Unregistering ResourceManager for type Compositor
20:16:39: Unregistering ResourceManager for type Material
20:16:39: Unregistering ResourceManager for type GpuProgram
20:16:39: Unloading library E:/||||||||||/Dependencies/ogre-caelum-master/bin/Debug/.\Codec_STBI
20:16:39: Uninstalling plugin: GL RenderSystem
20:16:39: *** Stopping Win32GL Subsystem ***
20:16:39: Plugin successfully uninstalled
20:16:39: Unloading library E:/||||||||||/Dependencies/ogre-caelum-master/bin/Debug/.\RenderSystem_GL
20:16:39: Uninstalling plugin: GL 3+ RenderSystem
20:16:39: Unregistering ResourceManager for type Texture
20:16:39: *** Stopping Win32GL Subsystem ***
20:16:39: Plugin successfully uninstalled
20:16:39: Unloading library E:/||||||||||/Dependencies/ogre-caelum-master/bin/Debug/.\RenderSystem_GL3Plus
20:16:39: Unregistering ResourceManager for type Skeleton
20:16:39: Unregistering ResourceManager for type Mesh
Last edited by RevenantStorm on Wed Nov 06, 2024 6:30 am, edited 1 time in total.
User avatar
sercero
Bronze Sponsor
Bronze Sponsor
Posts: 479
Joined: Sun Jan 18, 2015 4:20 pm
Location: Buenos Aires, Argentina
x 167

Re: SkyX/Caelum and GL 3+, best way forward?

Post by sercero »

I can't help you much with this, sorry.

I'm suprised that Caelum is using CG...

The benefit of going the Caelum path is that it would also benefit other people because you could contribute your fixes to the repo, while SkyX has a commercial license.

RevenantStorm
Gnoblar
Posts: 5
Joined: Tue Oct 29, 2024 12:10 am
x 1

Re: SkyX/Caelum and GL 3+, best way forward?

Post by RevenantStorm »

sercero wrote: Tue Oct 29, 2024 12:39 pm

I'm suprised that Caelum is using CG...

That makes two of us!

sercero wrote: Tue Oct 29, 2024 12:39 pm

The benefit of going the Caelum path is that it would also benefit other people because you could contribute your fixes to the repo, while SkyX has a commercial license.

My understanding was that SkyX is LGPL (or at least, the older version I'm working with is)? However, LGPL is more restrictive than MIT, and running a command-line tool to convert the Cg shaders seems like a more viable proposition. So I'll give that a shot and report back.

User avatar
eventhorizon
Kobold
Posts: 32
Joined: Wed Oct 20, 2010 4:56 am
x 12

Re: SkyX/Caelum and GL 3+, best way forward?

Post by eventhorizon »

RevenantStorm wrote: Tue Oct 29, 2024 1:33 am

Which option makes the most sense?

I use Caelum in my project, it somewhat works with OpenGL3+ but the clouds don't work due to them relying on Cg. I basically handle the exceptions and then run with a half-working Caelum haha. The only real solution we have is to move Caelum off of Cg somehow, I've looked into other options but there doesn't seem to be many at the moment.

I recently moved all Caelum code into a separate module (connects with the sim engine hypervisor):
https://github.com/eventhorizon5/skyscr ... vm/sky.cpp

Last edited by eventhorizon on Thu Oct 31, 2024 3:09 pm, edited 1 time in total.
paroj
OGRE Team Member
OGRE Team Member
Posts: 2106
Joined: Sun Mar 30, 2014 2:51 pm
x 1132

Re: SkyX/Caelum and GL 3+, best way forward?

Post by paroj »

SkyX

probably the shaders use GLSL built-in attributes, which are no longer available with GL3+:
https://ogrecave.github.io/ogre/api/lat ... otoc_md191

watch out for shader compilation errors in the log. When porting between GL3+ and GL1, you might find the UnifiedShader macros handy:
https://ogrecave.github.io/ogre/api/lat ... fiedShader

Caelum

The best way would be to port the Cg shaders to GLSL and then to the UnifiedShader macros. This way the shaders will work on all RenderSystems.

RevenantStorm
Gnoblar
Posts: 5
Joined: Tue Oct 29, 2024 12:10 am
x 1

Re: SkyX/Caelum and GL 3+, best way forward?

Post by RevenantStorm »

eventhorizon wrote: Tue Oct 29, 2024 5:40 pm
RevenantStorm wrote: Tue Oct 29, 2024 1:33 am

Which option makes the most sense?

I use Caelum in my project, it somewhat works with OpenGL3+ but the clouds don't work due to them relying on Cg. I basically handle the exceptions and then run with a half-working Caelum haha. The only real solution we have is to move Caelum off of Cg somehow, I've looked into other options but there doesn't seem to be many at the moment.

I recently moved all Caelum code into a separate module (connects with the sim engine hypervisor):
https://github.com/eventhorizon5/skyscr ... nd/sky.cpp

Interesting, that lines up with my experience trying to use clouds in Caelum. Hopefully, we can arrive at a solution that doesn't require swallowing exceptions.

paroj wrote: Tue Oct 29, 2024 6:27 pm

SkyX

probably the shaders use GLSL built-in attributes, which are no longer available with GL3+:
https://ogrecave.github.io/ogre/api/lat ... otoc_md191

watch out for shader compilation errors in the log. When porting between GL3+ and GL1, you might find the UnifiedShader macros handy:
https://ogrecave.github.io/ogre/api/lat ... fiedShader

Caelum

The best way would be to port the Cg shaders to GLSL and then to the UnifiedShader macros. This way the shaders will work on all RenderSystems.

Awesome, thanks! This feels like a nudge in the right direction.

I tried running the nVIDIA cgc utility against some of the Caelum Cg shaders and it seems to spit out GLSL, which is promising.

Predictably, the output is full of gl_* built-ins, which of course means they'll have to be replaced with modern equivalents. I am going to dig into this some more, but in the meantime, I can post the console commands I used to convert the Cg shaders or the output if anyone's interested.

paroj
OGRE Team Member
OGRE Team Member
Posts: 2106
Joined: Sun Mar 30, 2014 2:51 pm
x 1132

Re: SkyX/Caelum and GL 3+, best way forward?

Post by paroj »

ah.. forgot about that one.

actually, there are "glslf, glslv" cg profiles supported by ogre, which generate glsl code that can then be used by GL3+.

here is an example:
https://github.com/OGRECave/ogre/blob/1 ... .cpp#L5438

RevenantStorm
Gnoblar
Posts: 5
Joined: Tue Oct 29, 2024 12:10 am
x 1

Re: SkyX/Caelum and GL 3+, best way forward?

Post by RevenantStorm »

Success on the SkyX side!

Image

The main problem was a single line in the vertex shaders, specifically:

Code: Select all

gl_Position = gl_ModelViewProjectionMatrix * vertex;

which I replaced with:

Code: Select all

uniform mat4 projectionMatrix;
uniform mat4 worldMatrix;
uniform mat4 viewMatrix;
...
gl_Position = projectionMatrix * worldMatrix * viewMatrix * vertex;

and then supplied those matrices as parameters in the material script:

Code: Select all

param_named_auto projectionMatrix projection_matrix
param_named_auto viewMatrix view_matrix
param_named_auto worldMatrix world_matrix

There was also an issue with SkyX_Skydome.fragment calling pow(vec3, float), which the compiler didn't like. So I created a function to raise a vec3 to a power to solve that:

Code: Select all

vec3 powV3(vec3 base, float exponent)
{
	return vec3(pow(base.x, exponent), pow(base.y, exponent), pow(base.z, exponent));
}

It doesn't seem like there's any "official" SkyX repo to submit changes (most of them are years old or single-commit), but at this point it might be better to upload my entire SkyX codebase as I'm pretty sure I've had to make a few other changes for compatibility with modern Ogre (e.g. ms_Singleton, etc.).

Anyway, now that SkyX is handled and I'm emboldened by a relatively easy fix, let me turn my attention back to Caelum.

paroj wrote: Wed Oct 30, 2024 11:41 am

actually, there are "glslf, glslv" cg profiles supported by ogre, which generate glsl code that can then be used by GL3+.

So the same functionality is built into Ogre? Fascinating. If that also solves the problem of gl_ built-ins, that might be a better approach. Otherwise, I'll continue with running cgc on each of the cg files, extracting GLSL vertex and fragment shaders, and then replace the built-ins.

scratchyrice
Gnome
Posts: 360
Joined: Thu Apr 27, 2006 9:14 pm
Location: United Kingdom - England
x 16

Re: SkyX/Caelum and GL 3+, best way forward?

Post by scratchyrice »

Nice to see someone else is still using SkyX! Not sure I can be of much help in your case as I have it running with DX11. I have it working with true HDR if you need help with that.

Also have a highly modified multithreaded with multiple LOD version of Hydrax integrated into my engine. I will release it at some point as per the licence requires.

AMD Ryzen 7900x, Gigabyte Nvidia GeForce 3080 10GB, 32GB DDR5

RevenantStorm
Gnoblar
Posts: 5
Joined: Tue Oct 29, 2024 12:10 am
x 1

Re: SkyX/Caelum and GL 3+, best way forward?

Post by RevenantStorm »

scratchyrice wrote: Mon Nov 04, 2024 4:13 pm

Not sure I can be of much help in your case as I have it running with DX11. I have it working with true HDR if you need help with that.

No worries, I think I have the OpenGL 3+ side under control, and if I remember correctly, the difference between HDR/LDR is just a #define and additional parameter or two into the shaders. I might even already be using HDR, not sure off the top of my head.

There are still some issues with the moon and lightning modules which I will need to dig into, but those are not an immediate priority as I don't currently use them, and I think they will be relatively simple to fix as I suspect they're probably caused/affected by Ogre API changes since 1.8-1.9.

scratchyrice wrote: Mon Nov 04, 2024 4:13 pm

Also have a highly modified multithreaded with multiple LOD version of Hydrax integrated into my engine. I will release it at some point as per the licence requires.

I might be interested in looking that over at some point as I currently have a barebones unused HydraX integration in my project. Or, see if ogrewater equally meets my needs.

Between our codebases, we probably have a modernized version of the whole SkyX/HydraX suite haha.

paroj
OGRE Team Member
OGRE Team Member
Posts: 2106
Joined: Sun Mar 30, 2014 2:51 pm
x 1132

Re: [SOLVED]:SkyX/Caelum and GL 3+, best way forward?

Post by paroj »

note that I have somewhat updated forks of SkyX/ HydraX at:

I did not move them to OGRECave due to licensing (LGPL) differences.

Unfortunately I got no reply from @Xavyiy on any of the channels (mail, twitter) regarding re-licensing to MIT (as was possible with Cealum).

It might be also worth keeping an eye on the efforts by @tritonas00 viewtopic.php?t=97198
which only require one shader for sky and water and thus are much simpler. He wanted to contribute an Ogre Sample at some point, but I dont know what the status is with that..

scratchyrice
Gnome
Posts: 360
Joined: Thu Apr 27, 2006 9:14 pm
Location: United Kingdom - England
x 16

Re: [SOLVED]:SkyX/Caelum and GL 3+, best way forward?

Post by scratchyrice »

No worries, I think I have the OpenGL 3+ side under control, and if I remember correctly, the difference between HDR/LDR is just a #define and additional parameter or two into the shaders. I might even already be using HDR, not sure off the top of my head.

In theory, in reality I had to change the shaders as there are multiple points where saturate limits the colour output to 1.0 which you don't want with HDR. I don't think the HDR system was completed.

I might be interested in looking that over at some point as I currently have a barebones unused HydraX integration in my project. Or, see if ogrewater equally meets my needs.

Between our codebases, we probably have a modernized version of the whole SkyX/HydraX suite haha.

Will post the full source at some point as my project will hopefully be commercial and LPGL requires this. As you've probably seen the performance of hydrax is pretty bad. I've implemented an LOD system, and each LOD runs on a separate thread which compiles the necessary data and sends it over to the GPU via OpenCL. This works very well and I get well over 400fps on my system with very high complexity mesh's close to the camera. Some screenshots of it:
Image
Image

Unfortunately I got no reply from @Xavyiy on any of the channels (mail, twitter) regarding re-licensing to MIT (as was possible with Cealum).

Hmm must be a way of contacting him.

AMD Ryzen 7900x, Gigabyte Nvidia GeForce 3080 10GB, 32GB DDR5