Scirra / Construct-bugs

Public bug report submissions for Construct 3 and Construct Animate. Please read the guidelines then click the 'Issues' tab to get started.
https://www.construct.net
107 stars 83 forks source link

Tiled Background Broken Texture when loading From URL: #7551

Closed Tarek200 closed 11 months ago

Tarek200 commented 11 months ago

If two different objects request the same image to Load from URL, the Tiled_BG will load with a broken Texture. In this case, I load a (Sprite & TiledBG) 2023-11-16 03 51 14 2023-11-16 00 59 27

If you delete the first Action that loads the Sprite from URL then the Tiled Background will load as intended.

Attach a .c3p

1-Tiled BG Bug.zip

Steps to reproduce

  1. Run the project

Observed result

Tiled Background loads with broken Texture

Expected result

The Tiled Background to load without a broken Texture

More details

Affected browsers/platforms: Chrome

First affected release: r367

System details

View details Platform information Product: Construct 3 r367 (beta) Browser: Chrome 119.0.6045.159 Browser engine: Chromium Context: browser Operating system: Windows 10 Device type: desktop Device pixel ratio: 1 Logical CPU cores: 8 Approx. device memory: 8 GB User agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Language setting: en-US Local storage Storage quota (approx): 71 gb Storage usage (approx): 86 mb (0.1%) Persistant storage: No Browser support notes This list contains missing features that are not required, but could improve performance or user experience if supported. Nothing is missing. Everything is OK! WebGL information Version string: WebGL 2.0 (OpenGL ES 3.0 Chromium) Numeric version: 2 Supports NPOT textures: yes Supports GPU profiling: no Supports highp precision: yes Vendor: Google Inc. (NVIDIA) Renderer: ANGLE (NVIDIA, NVIDIA GeForce GTX 1070 (0x00001BE1) Direct3D11 vs_5_0 ps_5_0, D3D11) Major performance caveat: no Maximum texture size: 16384 Point size range: 1 to 1024 Extensions: EXT_color_buffer_float EXT_color_buffer_half_float EXT_disjoint_timer_query_webgl2 EXT_float_blend EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic EXT_texture_norm16 KHR_parallel_shader_compile OES_draw_buffers_indexed OES_texture_float_linear OVR_multiview2 WEBGL_clip_cull_distance WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context WEBGL_multi_draw WEBGL_provoking_vertex Audio information System sample rate: 48000 Hz Output channels: 2 Output interpretation: speakers Supported decode formats: WebM Opus (audio/webm; codecs=opus) Ogg Opus (audio/ogg; codecs=opus) WebM Vorbis (audio/webm; codecs=vorbis) Ogg Vorbis (audio/ogg; codecs=vorbis) MPEG-4 AAC (audio/mp4; codecs=mp4a.40.5) MP3 (audio/mpeg) FLAC (audio/flac) PCM WAV (audio/wav; codecs=1) Supported encode formats: WebM Opus (audio/webm; codecs=opus) Video information Supported decode formats: WebM AV1 (video/webm; codecs=av01.0.00M.08) MP4 AV1 (video/mp4; codecs=av01.0.00M.08) WebM VP9 (video/webm; codecs=vp9) WebM VP8 (video/webm; codecs=vp8) H.265 (video/mp4; codecs=hev1.1.2.L93.B0) H.264 (video/mp4; codecs=avc1.42E01E) Supported encode formats: WebM AV1 (video/webm; codecs=av1) WebM VP9 (video/webm; codecs=vp9) WebM VP8 (video/webm; codecs=vp8)
AshleyScirra commented 11 months ago

If you disable loading the Sprite image first it works correctly. The problem is the Sprite loads the image as a non-tiled texture, and then the Tiled Background loads the very same texture but set to tiled mode; currently the entire asset management system in Construct only handles textures by URL, so in that case it identifies it's already loaded the same texture and returns a non-tiled one to Tiled Background.

This could be difficult to fix as it may involve a significant overhaul of the asset management system in order to fix this one edge case with texture loading. Is it really important for your project?

WilsonPercival commented 11 months ago

This works well if done through scripts.

aaa
Tarek200 commented 11 months ago

If you disable loading the Sprite image first it works correctly. The problem is the Sprite loads the image as a non-tiled texture, and then the Tiled Background loads the very same texture but set to tiled mode; currently the entire asset management system in Construct only handles textures by URL, so in that case it identifies it's already loaded the same texture and returns a non-tiled one to Tiled Background.

This could be difficult to fix as it may involve a significant overhaul of the asset management system in order to fix this one edge case with texture loading. Is it really important for your project?

@AshleyScirra Is not a big deal for me as I haven't used it in anything important, except for editors etc... So is okay for me. Though from what you described is first come first served so I changed the order of the Actions if you load first the TileBG and then after the Sprite it looks like it works correctly unless something happens underhood that I dont know I think that could be a quick fix, I will just have to remember this edge case.

Tarek200 commented 11 months ago

This works well if done through scripts.

aaa

@WilsonPercival Cool Thanks, nice to have alternatives just in case.

AshleyScirra commented 11 months ago

Closing as wontfix as this is appears to be a difficult problem that does not have any real-world use yet.