Thanks for all the hints. In practice, I’m not going to code serious games. My area of interest is using Panda3D for the demoscene. And I even managed to achieve something with Panda3D:
But now I just dreamed of creating more advanced effects.
I ran this code which prints "notify-level-glgsg debug"
. I don’t understand much of it, but here’s what turned out:
/Users/miklesz/PycharmProjects/Demo2023/venv/bin/python /Users/miklesz/PycharmProjects/Demo2023/volumetric_4.py
Known pipe types:
CocoaGraphicsPipe
(all display modules loaded.)
:display:gsg:glgsg(debug): GL_VENDOR = Apple
:display:gsg:glgsg(debug): GL_RENDERER = Apple M1
:display:gsg:glgsg(debug): GL_VERSION = 2.1 Metal - 76.3
:display:gsg:glgsg(debug): GL_VERSION decoded to: 2.1
:display:gsg:glgsg(debug): GL_SHADING_LANGUAGE_VERSION = 1.20
:display:gsg:glgsg(debug): Detected GLSL version: 1.20
:display:gsg:glgsg(debug): Using compatibility profile
:display:gsg:glgsg(debug): GL Extensions:
GL_APPLE_aux_depth_stencil GL_APPLE_client_storage
GL_APPLE_element_array GL_APPLE_fence
GL_APPLE_float_pixels GL_APPLE_flush_buffer_range
GL_APPLE_flush_render GL_APPLE_packed_pixels
GL_APPLE_pixel_buffer GL_APPLE_rgb_422
GL_APPLE_row_bytes GL_APPLE_specular_vector
GL_APPLE_texture_range GL_APPLE_transform_hint
GL_APPLE_vertex_array_object GL_APPLE_vertex_point_size
GL_APPLE_vertex_program_evaluators GL_APPLE_ycbcr_422
GL_ARB_color_buffer_float GL_ARB_depth_buffer_float
GL_ARB_depth_clamp GL_ARB_depth_texture
GL_ARB_draw_buffers GL_ARB_draw_elements_base_vertex
GL_ARB_draw_instanced GL_ARB_fragment_program
GL_ARB_fragment_program_shadow GL_ARB_fragment_shader
GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB
GL_ARB_half_float_pixel GL_ARB_half_float_vertex
GL_ARB_imaging GL_ARB_instanced_arrays
GL_ARB_multisample GL_ARB_multitexture
GL_ARB_occlusion_query GL_ARB_pixel_buffer_object
GL_ARB_point_parameters GL_ARB_point_sprite
GL_ARB_provoking_vertex GL_ARB_seamless_cube_map
GL_ARB_shader_objects GL_ARB_shader_texture_lod
GL_ARB_shading_language_100 GL_ARB_shadow
GL_ARB_shadow_ambient GL_ARB_sync
GL_ARB_texture_border_clamp GL_ARB_texture_compression
GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map
GL_ARB_texture_env_add GL_ARB_texture_env_combine
GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3
GL_ARB_texture_float GL_ARB_texture_mirrored_repeat
GL_ARB_texture_non_power_of_two GL_ARB_texture_rectangle
GL_ARB_texture_rg GL_ARB_transpose_matrix
GL_ARB_vertex_array_bgra GL_ARB_vertex_blend
GL_ARB_vertex_buffer_object GL_ARB_vertex_program
GL_ARB_vertex_shader GL_ARB_window_pos
GL_ATI_separate_stencil GL_ATI_texture_env_combine3
GL_ATI_texture_float GL_EXT_abgr
GL_EXT_bgra GL_EXT_bindable_uniform
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_debug_label GL_EXT_debug_marker
GL_EXT_draw_buffers2 GL_EXT_draw_range_elements
GL_EXT_fog_coord GL_EXT_framebuffer_blit
GL_EXT_framebuffer_multisample GL_EXT_framebuffer_multisample_blit_scaled
GL_EXT_framebuffer_object GL_EXT_framebuffer_sRGB
GL_EXT_geometry_shader4 GL_EXT_gpu_program_parameters
GL_EXT_gpu_shader4 GL_EXT_multi_draw_arrays
GL_EXT_packed_depth_stencil GL_EXT_packed_float
GL_EXT_provoking_vertex GL_EXT_rescale_normal
GL_EXT_secondary_color GL_EXT_separate_specular_color
GL_EXT_shadow_funcs GL_EXT_stencil_two_side
GL_EXT_stencil_wrap GL_EXT_texture_array
GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_s3tc
GL_EXT_texture_env_add 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_timer_query GL_EXT_transform_feedback
GL_EXT_vertex_array_bgra GL_IBM_rasterpos_clip
GL_NV_blend_square GL_NV_conditional_render
GL_NV_depth_clamp GL_NV_fog_distance
GL_NV_fragment_program2 GL_NV_fragment_program_option
GL_NV_light_max_exponent GL_NV_texgen_reflection
GL_NV_texture_barrier GL_NV_vertex_program2_option
GL_NV_vertex_program3 GL_SGIS_generate_mipmap
GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod
GL_SGI_color_matrix
:display:gsg:glgsg(debug): HAS EXT GL_EXT_debug_marker 1
:display:gsg:glgsg(debug): HAS EXT GL_KHR_debug 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_debug_output 0
:display:gsg:glgsg(debug): gl-debug disabled and unsupported.
:display:gsg:glgsg(debug): HAS EXT GL_ARB_ES3_compatibility 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_texture_storage 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_clear_texture 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_clear_buffer_object 0
:display:gsg:glgsg(debug): HAS EXT GL_EXT_texture_array 1
:display:gsg:glgsg(debug): HAS EXT GL_ARB_seamless_cube_map 1
:display:gsg:glgsg(debug): HAS EXT GL_ARB_texture_cube_map_array 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_texture_buffer_object 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_texture_compression_rgtc 1
:display:gsg:glgsg(debug): HAS EXT GL_ARB_vertex_array_bgra 1
:display:gsg:glgsg(debug): HAS EXT GL_ARB_vertex_type_10f_11f_11f_rev 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_framebuffer_object 1
:display:gsg:glgsg(debug): HAS EXT GL_ARB_map_buffer_range 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_buffer_storage 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_vertex_array_object 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_tessellation_shader 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_geometry_shader4 0
:display:gsg:glgsg(debug): HAS EXT GL_EXT_geometry_shader4 1
:display:gsg:glgsg(debug): HAS EXT GL_ARB_vertex_program 1
:display:gsg:glgsg(debug): HAS EXT GL_ARB_fragment_program 1
:display:gsg:glgsg(debug): HAS EXT GL_NV_gpu_program5 0
:display:gsg:glgsg(debug): HAS EXT GL_NV_gpu_program4 0
:display:gsg:glgsg(debug): HAS EXT GL_NV_vertex_program3 1
:display:gsg:glgsg(debug): HAS EXT GL_NV_fragment_program2 1
:display:gsg:glgsg(debug): HAS EXT GL_ARB_compute_shader 0
:display:gsg:glgsg(debug): HAS EXT GL_EXT_gpu_shader4 1
:display:gsg:glgsg(debug): HAS EXT GL_ARB_vertex_attrib_64bit 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_vertex_attrib_binding 0
:display:gsg:glgsg(debug): HAS EXT ARB_shader_storage_buffer_object 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_instanced_arrays 1
:display:gsg:glgsg(debug): HAS EXT GL_ARB_draw_instanced 1
:display:gsg:glgsg(debug): HAS EXT GL_ARB_draw_indirect 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_framebuffer_object 1
:display:gsg:glgsg(debug): HAS EXT GL_ARB_direct_state_access 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_framebuffer_no_attachments 0
:display:gsg:glgsg(debug): HAS EXT GL_NV_framebuffer_multisample_coverage 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_viewport_array 0
:display:gsg:glgsg(debug): Occlusion query counter provides 32 bits.
:display:gsg:glgsg(debug): HAS EXT GL_ARB_timer_query 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_blend_func_extended 0
:display:gsg:glgsg(debug): HAS EXT GL_EXT_texture_mirror_clamp 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_texture_mirror_clamp_to_edge 0
:display:gsg:glgsg(debug): max texture dimension = 16384, max 3d texture = 2048, max 2d texture array = 2048, max cube map = 16384
:display:gsg:glgsg(debug): max_elements_vertices = 1048575, max_elements_indices = 150000
:display:gsg:glgsg(debug): vertex buffer objects are supported.
:display:gsg:glgsg(debug): Supported compressed texture formats:
GL_COMPRESSED_RGB_S3TC_DXT1_EXT
GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
GL_COMPRESSED_RGBA_S3TC_DXT5_EXT
:display:gsg:glgsg(debug): HAS EXT GL_EXT_texture_filter_anisotropic 1
:display:gsg:glgsg(debug): HAS EXT GL_ARB_shader_image_load_store 0
:display:gsg:glgsg(debug): HAS EXT GL_EXT_shader_image_load_store 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_sampler_objects 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_multi_bind 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_internalformat_query2 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_bindless_texture 0
:display:gsg:glgsg(debug): HAS EXT GL_ARB_get_program_binary 0
:display:gsg:glgsg(debug): HAS EXT GL_EXT_stencil_two_side 1
:display:gsg:glgsg(debug): max lights = 8
:display:gsg:glgsg(debug): max clip planes = 6
:display:gsg:glgsg(debug): max texture stages = 8
:display:gsg:glgsg(debug): No program binary formats supported.
:display:gsg:glgsg(debug): HAS EXT GL_NV_gpu_program5 0
:display:gsg:glgsg(debug): HAS EXT GL_NV_gpu_program4 0
:display:gsg:glgsg(debug): HAS EXT GL_NV_fragment_program2 1
:display:gsg:glgsg(debug): Supported Cg profiles:
:display:gsg:glgsg(debug): arbvp1
:display:gsg:glgsg(debug): fp40
:display:gsg:glgsg(debug): arbfp1
:display:gsg:glgsg(debug): vp40
:display:gsg:glgsg(debug): glslv
:display:gsg:glgsg(debug): glslf
:display:gsg:glgsg(debug): glslg
:display:gsg:glgsg(debug): Cg GLSL version = CG_GL_GLSL_120
:display:gsg:glgsg(debug): Cg latest vertex profile = vp40
:display:gsg:glgsg(debug): Cg latest fragment profile = fp40
:display:gsg:glgsg(debug): Cg latest geometry profile = unknown
:display:gsg:glgsg(debug): basic-shaders-only #f
:display:gsg:glgsg(debug): Cg active vertex profile = vp40
:display:gsg:glgsg(debug): Cg active fragment profile = fp40
:display:gsg:glgsg(debug): Cg active geometry profile = unknown
:display:gsg:glgsg(debug): shader model = 3.0
:display:gsg:glgsg(debug): GLGraphicsStateGuardian 0x7fda93815210 destructing
Process finished with exit code 0
I also tried to force "gl-version 4 1"
but the effect was like forcing "gl-version 3 2"
(which is none, unfortunately).
Based on this thread from Stack Overflow, I realized that Mac in general has problems with OpenGL and the solution could be Vulkan. Therefore, I can see 3 solutions:
- Someone will give me an else idea.
- I will wait for the new shader pipeline based on Vulkan, which has been announced by @rdb for some time:
The Year 2021 in Review | Panda3D - I will not see any other solutions and maybe I will write a shader from scratch that implements Volumetric Lighting on the old OpenGL (which would be a solution, although probably quite desperate).