castle-engine / castle-model-viewer

Viewer for many 3D and 2D model formats: glTF, X3D, VRML, Collada, 3DS, MD3, Wavefront OBJ, STL, Spine JSON, sprite sheets in Cocos2D and Starling XML formats
https://castle-engine.io/castle-model-viewer
92 stars 19 forks source link

[FYI] turning phong shading off (also persists after putting back on) in water examples makes go mouve. (channel swap?) #56

Open splace opened 1 year ago

splace commented 1 year ago

(this is mostly for info, since this is on flatpak runtime/org.fedoraproject.Platform/x86_64/f38 (mesa 23) on wayland, so bug could be there, but it is the same on runtime/org.fedoraproject.Platform/x86_64/f37 (mesa 22) so isn't that new)

only_vertex_animation_0 only_vertex_animation_1

Barna29_0 Barna29_1

only reloading fixes, seems somthing not being reset/cleared in shaders?

OpenGL information (detected by view3dscene):

--------
Version:
  Version string: 4.5 (Compatibility Profile) Mesa 23.0.1
  Version parsed: major: 4, minor: 5, release exists: False, release: 0, vendor-specific information: "(Compatibility Profile) Mesa 23.0.1"
  Vendor-specific version parsed: major: 23, minor: 0, release: 1
  Vendor: AMD
  Vendor type: Unknown

  Renderer: OLAND (, LLVM 15.0.7, DRM 2.50, 6.4.0-0.rc0.20230505git78b421b6a7c6.14.fc39.x86_64)
  Fglrx (ATI on Linux): False
  Mesa: True

  Buggy glGenerateMipmap(EXT): False
  Buggy GL_LIGHT_MODEL_TWO_SIDE: False
  Buggy VBO: False
  Buggy shader shadow map: False
  Buggy FBO rendering to multi-sampling texture: False
  Buggy FBO rendering to cube map texture: False
  Buggy swap buffers with non-standard glViewport: False
  Buggy 32-bit depth buffer: False
  Buggy GLSL gl_FrontFacing: False
  Buggy GLSL read varying: False
  Buggy Pure Shader Pipeline: False
  Buggy Texture Size Above 2048: False
  Buggy Shader Bump Mapping num_steps: False

------------------------
Real versions available:
(checks both version string and actual functions availability in GL library, to secure from buggy implementations)

  1.2: True
  1.3: True
  1.4: True
  1.5: True
  2.0: True
  2.1: True
  3.0: True
  3.1: True
  3.2: True
  3.3: True
  4.0: True

---------
Features:
  Shaders (GLSL) support: Standard
  => Enable deprecated (fixed-function) support: False
  Multi-texturing: True
  Framebuffer Object: Standard (or ARB "core extension")
  Multi-sampling for FBO buffers and textures: True
  Vertex Buffer Object: True
  GenerateMipmap available (and reliable): True
  Cube map textures: Standard
  Compressed textures supported: [DXT1_RGB, DXT1_RGBA, DXT3, DXT5, ASTC_4x4_RGBA, ASTC_5x4_RGBA, ASTC_5x5_RGBA, ASTC_6x5_RGBA, ASTC_6x6_RGBA, ASTC_8x5_RGBA, ASTC_8x6_RGBA, ASTC_8x8_RGBA, ASTC_10x5_RGBA, ASTC_10x6_RGBA, ASTC_10x8_RGBA, ASTC_10x10_RGBA, ASTC_12x10_RGBA, ASTC_12x12_RGBA, ASTC_4x4_SRGB8_ALPHA8, ASTC_5x4_SRGB8_ALPHA8, ASTC_5x5_SRGB8_ALPHA8, ASTC_6x5_SRGB8_ALPHA8, ASTC_6x6_SRGB8_ALPHA8, ASTC_8x5_SRGB8_ALPHA8, ASTC_8x6_SRGB8_ALPHA8, ASTC_8x8_SRGB8_ALPHA8, ASTC_10x5_SRGB8_ALPHA8, ASTC_10x6_SRGB8_ALPHA8, ASTC_10x8_SRGB8_ALPHA8, ASTC_10x10_SRGB8_ALPHA8, ASTC_12x10_SRGB8_ALPHA8, ASTC_12x12_SRGB8_ALPHA8]
  3D textures: Standard
  Textures non-power-of-2: True
  Blend constant parameter: True
  Float textures: True
  Depth textures: True
  Packed depth + stencil: True

  All extensions: GL_ARB_multisample GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_copy_texture GL_EXT_subtexture GL_EXT_texture_object GL_EXT_vertex_array GL_EXT_compiled_vertex_array GL_EXT_texture GL_EXT_texture3D GL_IBM_rasterpos_clip GL_ARB_point_parameters GL_EXT_draw_range_elements GL_EXT_packed_pixels GL_EXT_point_parameters GL_EXT_rescale_normal GL_EXT_separate_specular_color GL_EXT_texture_edge_clamp GL_SGIS_generate_mipmap GL_SGIS_texture_border_clamp GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod GL_ARB_framebuffer_sRGB GL_ARB_multitexture GL_EXT_framebuffer_sRGB GL_IBM_multimode_draw_arrays GL_IBM_texture_mirrored_repeat GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_transpose_matrix GL_EXT_blend_func_separate GL_EXT_fog_coord GL_EXT_multi_draw_arrays GL_EXT_secondary_color GL_EXT_texture_env_add GL_EXT_texture_filter_anisotropic GL_EXT_texture_lod_bias GL_INGR_blend_func_separate GL_NV_blend_square GL_NV_light_max_exponent GL_NV_texgen_reflection GL_NV_texture_env_combine4 GL_S3_s3tc GL_SUN_multi_draw_arrays GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_EXT_framebuffer_object GL_EXT_texture_compression_s3tc GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_MESA_window_pos GL_NV_packed_depth_stencil GL_NV_texture_rectangle GL_ARB_depth_texture GL_ARB_occlusion_query GL_ARB_shadow GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_mirrored_repeat GL_ARB_window_pos GL_ATI_fragment_shader GL_EXT_stencil_two_side GL_EXT_texture_cube_map GL_NV_copy_depth_to_color GL_NV_depth_clamp GL_NV_fog_distance GL_NV_half_float GL_APPLE_packed_pixels GL_ARB_draw_buffers GL_ARB_fragment_program GL_ARB_fragment_shader GL_ARB_shader_objects GL_ARB_vertex_program GL_ARB_vertex_shader GL_ATI_draw_buffers GL_ATI_texture_env_combine3 GL_ATI_texture_float GL_EXT_depth_bounds_test GL_EXT_shadow_funcs GL_EXT_stencil_wrap GL_MESA_pack_invert GL_NV_primitive_restart GL_ARB_depth_clamp GL_ARB_fragment_program_shadow GL_ARB_half_float_pixel GL_ARB_occlusion_query2 GL_ARB_point_sprite GL_ARB_shading_language_100 GL_ARB_sync GL_ARB_texture_non_power_of_two GL_ARB_vertex_buffer_object GL_ATI_blend_equation_separate GL_EXT_blend_equation_separate GL_OES_read_format GL_ARB_color_buffer_float GL_ARB_pixel_buffer_object GL_ARB_texture_compression_rgtc GL_ARB_texture_float GL_ARB_texture_rectangle GL_ATI_texture_compression_3dc GL_EXT_packed_float GL_EXT_pixel_buffer_object GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_rgtc GL_EXT_texture_mirror_clamp GL_EXT_texture_rectangle GL_EXT_texture_sRGB GL_EXT_texture_shared_exponent GL_ARB_framebuffer_object GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_packed_depth_stencil GL_ARB_vertex_array_object GL_ATI_separate_stencil GL_ATI_texture_mirror_once GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_gpu_program_parameters GL_EXT_gpu_shader4 GL_EXT_texture_array GL_EXT_texture_compression_latc GL_EXT_texture_integer GL_EXT_texture_sRGB_decode GL_EXT_timer_query GL_OES_EGL_image GL_AMD_performance_monitor GL_EXT_texture_buffer_object GL_AMD_texture_texture4 GL_ARB_copy_buffer GL_ARB_depth_buffer_float GL_ARB_draw_instanced GL_ARB_half_float_vertex GL_ARB_instanced_arrays GL_ARB_map_buffer_range GL_ARB_texture_buffer_object GL_ARB_texture_rg GL_ARB_texture_swizzle GL_ARB_vertex_array_bgra GL_EXT_texture_swizzle GL_EXT_vertex_array_bgra GL_NV_conditional_render GL_AMD_conservative_depth GL_AMD_depth_clamp_separate GL_AMD_draw_buffers_blend GL_AMD_seamless_cubemap_per_texture GL_AMD_shader_stencil_export GL_ARB_ES2_compatibility GL_ARB_blend_func_extended GL_ARB_compatibility GL_ARB_debug_output GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_explicit_attrib_location GL_ARB_fragment_coord_conventions GL_ARB_provoking_vertex GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_shader_stencil_export GL_ARB_shader_texture_lod GL_ARB_tessellation_shader GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_cube_map_array GL_ARB_texture_gather GL_ARB_texture_multisample GL_ARB_texture_query_lod GL_ARB_texture_rgb10_a2ui GL_ARB_uniform_buffer_object GL_ARB_vertex_type_2_10_10_10_rev GL_ATI_meminfo GL_EXT_provoking_vertex GL_EXT_texture_snorm GL_MESA_texture_signed_rgba GL_NV_copy_image GL_NV_texture_barrier GL_ARB_draw_indirect GL_ARB_get_program_binary GL_ARB_gpu_shader5 GL_ARB_gpu_shader_fp64 GL_ARB_robustness GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_shader_precision GL_ARB_shader_subroutine GL_ARB_texture_compression_bptc GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_vertex_attrib_64bit GL_ARB_viewport_array GL_EXT_direct_state_access GL_EXT_shader_image_load_store GL_EXT_vertex_attrib_64bit GL_NV_vdpau_interop GL_AMD_multi_draw_indirect GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ARB_base_instance GL_ARB_compressed_texture_pixel_storage GL_ARB_conservative_depth GL_ARB_internalformat_query GL_ARB_map_buffer_alignment GL_ARB_shader_atomic_counters GL_ARB_shader_image_load_store GL_ARB_shading_language_420pack GL_ARB_shading_language_packing GL_ARB_texture_storage GL_ARB_transform_feedback_instanced GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_transform_feedback GL_AMD_query_buffer_object GL_AMD_shader_trinary_minmax GL_AMD_vertex_shader_layer GL_AMD_vertex_shader_viewport_index GL_ARB_ES3_compatibility GL_ARB_arrays_of_arrays GL_ARB_clear_buffer_object GL_ARB_compute_shader GL_ARB_copy_image GL_ARB_explicit_uniform_location GL_ARB_fragment_layer_viewport GL_ARB_framebuffer_no_attachments GL_ARB_invalidate_subdata GL_ARB_multi_draw_indirect GL_ARB_program_interface_query GL_ARB_robust_buffer_access_behavior GL_ARB_shader_image_size GL_ARB_shader_storage_buffer_object GL_ARB_stencil_texturing GL_ARB_texture_buffer_range GL_ARB_texture_query_levels GL_ARB_texture_storage_multisample GL_ARB_texture_view GL_ARB_vertex_attrib_binding GL_KHR_debug GL_KHR_robustness GL_KHR_texture_compression_astc_ldr GL_AMD_pinned_memory GL_ARB_bindless_texture GL_ARB_buffer_storage GL_ARB_clear_texture GL_ARB_compute_variable_group_size GL_ARB_enhanced_layouts GL_ARB_internalformat_query2 GL_ARB_multi_bind GL_ARB_query_buffer_object GL_ARB_seamless_cubemap_per_texture GL_ARB_shader_group_vote GL_ARB_shading_language_include GL_ARB_texture_mirror_clamp_to_edge GL_ARB_texture_stencil8 GL_ARB_vertex_type_10f_11f_11f_rev GL_EXT_debug_label GL_EXT_shader_integer_mix GL_NVX_gpu_memory_info GL_ARB_ES3_1_compatibility GL_ARB_clip_control GL_ARB_conditional_render_inverted GL_ARB_cull_distance GL_ARB_derivative_control GL_ARB_direct_state_access GL_ARB_get_texture_sub_image GL_ARB_pipeline_statistics_query GL_ARB_shader_texture_image_samples GL_ARB_texture_barrier GL_ARB_transform_feedback_overflow_query GL_EXT_polygon_offset_clamp GL_EXT_shader_image_load_formatted GL_KHR_blend_equation_advanced GL_KHR_context_flush_control GL_KHR_robust_buffer_access_behavior GL_NV_shader_atomic_int64 GL_ARB_ES3_2_compatibility GL_ARB_gpu_shader_int64 GL_ARB_parallel_shader_compile GL_ARB_shader_atomic_counter_ops GL_ARB_shader_ballot GL_ARB_shader_clock GL_ARB_shader_viewport_layer_array GL_EXT_shader_samples_identical GL_EXT_texture_sRGB_R8 GL_KHR_no_error GL_KHR_texture_compression_astc_sliced_3d GL_ARB_gl_spirv GL_ARB_spirv_extensions GL_EXT_window_rectangles GL_MESA_shader_integer_functions GL_ARB_polygon_offset_clamp GL_ARB_texture_filter_anisotropic GL_EXT_memory_object GL_EXT_memory_object_fd GL_KHR_parallel_shader_compile GL_NV_alpha_to_coverage_dither_control GL_EXT_EGL_image_storage GL_EXT_texture_shadow_lod GL_INTEL_blackhole_render GL_MESA_framebuffer_flip_y GL_NV_compute_shader_derivatives GL_EXT_EGL_sync GL_EXT_demote_to_helper_invocation GL_NV_ES1_1_compatibility 

---------------------------
Current buffers bit depths:
  Color (red / green / blue / alpha): 8 / 8 / 8 / 0
  Depth: 24
  Index: 0
  Stencil: 8
  Accumulation (red / green / blue / alpha): 0 / 0 / 0 / 0
  Double buffer: True
  Multi-sampling (full-screen anti-aliasing) possible: True
    Current: 4 samples per pixel

-------------
Stack depths:
  Attributes: 16
  Client attributes: 16
  Modelview: 32
  Projection: 32
  Texture: 10
  Name: 64

-------
Limits:
  Max clip planes: 8
  Max lights (fixed-function limit): 8
  Max eval order: 30
  Max list nesting: 64
  Max pixel map table: 256
  Max texture size: 16384
  Max viewport dims (width, height): 16384 16384
  Max texture units (shader pipeline): 32
  Max texture units (fixed-function): 8
  Max cube map texture size: 16384
  Max 3d texture size: 2048
  Max texture max anisotropy: 16
  Query counter bits (for occlusion query): 64
  Max renderbuffer size: 16384
  Max line width: 1.00 2048.00

-------
Memory (in Kb):
  Total: 3141432
  Current: 507956
  Current for VBO: 507956
  Current for Textures: 507956
  Current for Renderbuffers: 507956
michaliskambi commented 1 year ago

Thank you, confirmed -- I can reproduce the problem with very latest view3dscene, on Linux, on at least the files you show in the report:

On a quite different GPU:

  Context requested: automatic

  Version string: 4.6.0 NVIDIA 515.105.01
  Version parsed: major: 4, minor: 6, release exists: True, release: 0, vendor-specific information: "NVIDIA 515.105.01"
  Version in suffix, specific to vendor: major: 515, minor: 105, release: 1

  Vendor string: NVIDIA Corporation
  Vendor type: Nvidia
  Special vendors:
    Fglrx: False
    Mesa: False

  Renderer: NVIDIA GeForce RTX 3050 Ti Laptop GPU/PCIe/SSE2

Indeed toggling "Phong Shading on Everything" makes weird colors, and toggling it back keeps weird colors. Only "File->Reopen" helps.

It's most likely a bug in CGE, not on your GPU, so I definitely want to fix it :)