Page MenuHome

UDIM Rectangular Tiled Image EEVEE freezes Blender
Closed, ResolvedPublic

Description

System Information
Operating system: Darwin-19.4.0-x86_64-i386-64bit 64 Bits
Graphics card: AMD Radeon Pro Vega 64X OpenGL Engine ATI Technologies Inc. 4.1 ATI-3.8.24

Blender Version
Broken: version: 2.83 (sub 15), branch: master, commit date: 2020-05-02 11:33, hash: rB1623fdb3bc55
Broken: version: 2.82 (sub 7), branch: master, commit date: 2020-03-12 05:06, hash: rB375c7dc4caf4
Identical crash, both versions.
Worked: New Feature, has never worked as expected (in this way)

Short description of error
Rectangular, power of 2 UDIM Tiles cause Blender to hang indefinitely (spinning rainbow of death) when attempting to render in EEVEE.
Cycles works fine, EEVEE will hang whether attaching a new image to a shader, or switching to EEVEE from Cycles or Solid.

Exact steps for others to reproduce the error
Easily reproduced from startup.

  1. Create new, generated, *tiled* image, make size non-square power of 2 (1024x2048 is an example)
  2. Add several new tiles (I add 4) to the image.
  3. With Textured View, or Rendered (EEVEE) selected, attach new image to 'Base Color' of shader.
  4. Blender should now be unresponsive, and will stay so (tested for 90 minutes).

Saving the image first makes no difference.
Complex scenes make no difference.
Square Images work very nicely.

This is a wonderful new feature! I have been using it (with square images) to great effect. I hope this little hitch in this great new workflow is an easy fix.

Thanks in advance!

Event Timeline

Richard Antalik (ISS) changed the task status from Needs Triage to Confirmed.May 5 2020, 1:03 PM
Richard Antalik (ISS) removed a project: Modeling.

There seems to be endless loop in gpu_texture_create_tile_array()

>	blender.exe!gpu_texture_create_tile_array(Image * ima, ImBuf * main_ibuf) Line 321	C
 	blender.exe!GPU_texture_from_blender(Image * ima, ImageUser * iuser, ImBuf * ibuf, int textarget) Line 906	C
 	blender.exe!drw_shgroup_material_texture(DRWShadingGroup * grp, GPUMaterialTexture * tex, const unsigned char * name, int textarget) Line 1299	C
 	blender.exe!drw_shgroup_material_inputs(DRWShadingGroup * grp, GPUMaterial * material) Line 1317	C
 	blender.exe!DRW_shgroup_material_create(GPUMaterial * material, DRWPass * pass) Line 1361	C
 	blender.exe!material_opaque(Material * ma, GHash * material_hash, EEVEE_ViewLayerData * sldata, EEVEE_Data * vedata, GPUMaterial * * gpumat, GPUMaterial * * gpumat_depth, EeveeMaterialShadingGroups * shgrps, bool holdout) Line 1531	C
 	blender.exe!EEVEE_materials_cache_populate(EEVEE_Data * vedata, EEVEE_ViewLayerData * sldata, Object * ob, bool * cast_shadow) Line 2032	C
 	blender.exe!EEVEE_cache_populate(void * vedata, Object * ob) Line 152	C
 	blender.exe!drw_engines_cache_populate(Object * ob) Line 994	C
 	blender.exe!DRW_draw_render_loop_ex(Depsgraph * depsgraph, RenderEngineType * engine_type, ARegion * region, View3D * v3d, GPUViewport * viewport, const bContext * evil_C) Line 1465	C
 	blender.exe!DRW_draw_view(const bContext * C) Line 1393	C
 	blender.exe!view3d_main_region_draw(const bContext * C, ARegion * region) Line 1634	C
 	blender.exe!ED_region_do_draw(bContext * C, ARegion * region) Line 539	C
 	blender.exe!wm_draw_window_offscreen(bContext * C, wmWindow * win, bool stereo) Line 690	C
 	blender.exe!wm_draw_window(bContext * C, wmWindow * win) Line 816	C
 	blender.exe!wm_draw_update(bContext * C) Line 1022	C
 	blender.exe!WM_main(bContext * C) Line 457	C
 	blender.exe!main(int argc, const unsigned char * * UNUSED_argv_c) Line 530	C
 	[External Code]

2048x1024 seems to work 1024x2048 fails and raises an assert

BLI_assert failed: /home/jeroen/blender-git/blender/source/blender/gpu/intern/gpu_draw.c:306, gpu_texture_create_tile_array(), at 'packed.first != ((void *)0)'
Seems to be a typo in our box pack algorithm where the dimension is only tested against the width-dimension.