text: [{"Owner":"gamefan","Date":"2018-06-13T07:34:21Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\tHi_co_\n_lt_/p_gt_\n\n_lt_p_gt_\n\tStarted using compressed textures in our projects. Came across three possible bugs_co_ not sure about the last one. PG_dd_ _lt_a href_eq__qt_https_dd_//www.babylonjs-playground.com/#RK0W5S%232_qt_ rel_eq__qt_external nofollow_qt__gt_https_dd_//www.babylonjs-playground.com/#RK0W5S#2_lt_/a_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\t1 and 2 are demonstrated in the above PG. Comment line #5 to compare results when not using compressed textures._lt_br /_gt_\n\t_lt_br /_gt_\n\t1.) Incorrect texture returned when Engine is set to use a ktx format texture and Texture is made via Texture.CreateFromBase64String. Possibe fix_dd_ bypass textureFormatInUse when buffer is available in Engine.CreateTexture\n_lt_/p_gt_\n\n_lt_p_gt_\n\t2.) Callback passed to Texture is not fired when CreateTexture falls back to url passed on not finding its ktx counterparts. Need this to finish a _qt_change texture_qt_ flow. Possible fix_dd_ Ignore fallback argument and create onLoadObserver in Engine.CreateTexture\n_lt_/p_gt_\n\n_lt_p_gt_\n\t3.) When engine is set to use ktx format _co_ CubeTexture looks for one ktx file instead of 6. I don_t_t know if the cubeTextures in ktx formats are to be composited into a single file. I use this _lt_a href_eq__qt_https_dd_//doc.babylonjs.com/resources/multi-platform_compressed_textures#nodejs-script-for-pvrtextool_qt_ rel_eq__qt_external nofollow_qt__gt_gulp task_lt_/a_gt_ to create compressed textures.\n_lt_/p_gt_\n\n_lt_p_gt_\n\tGot a work around for 1 and 2 but 3 is beyond me. Want this to support 360 tours on low spec devices._lt_br /_gt_\n\t_lt_br /_gt_\n\t_lt_br /_gt_\n\t_lt_br /_gt_\n\t_lt_br /_gt_\n\t \n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"JCPalmer","Date":"2018-06-13T16:17:40Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\t1) Compressed textures can only be url based.  This is because the actual texture to use is not known at build time.  An iOS system is going to want PVRTC or also ASTC in the future.  A Win desktop is probably going to pick DXT.  You only have one string_co_ not 5.  If you are only saying that you cannot use CreateFromBase64String while compressed textures are enabled_co_ that is true.  Whether it is a bug or not_co_ do not know.  If you can PR change that allows both at the same time_co_ go for it.\n_lt_/p_gt_\n\n_lt_p_gt_\n\t2) When falling back due to a .ktx file not found_co_ it looks _lt_a href_eq__qt_https_dd_//github.com/BabylonJS/Babylon.js/blob/master/src/Engine/babylon.engine.ts#L4210_qt_ rel_eq__qt_external nofollow_qt__gt_like null is being passed_lt_/a_gt_ when createTexture calls itself.  Not sure if this can pass the value from the first call or not_co_ but that is where you might make a change.  I think I just did the same thing as a DDS container did.\n_lt_/p_gt_\n\n_lt_p_gt_\n\t3) Yes_co_ I am pretty sure that cube textures in .ktx are all sides in one file_co_ since _lt_a href_eq__qt_https_dd_//github.com/BabylonJS/Babylon.js/blob/master/src/Tools/babylon.khronosTextureContainer.ts#L36_qt_ rel_eq__qt_external nofollow_qt__gt_facesExpected_lt_/a_gt_is a constructor argument.  Been a while since I wrote this_co_ and never had the time to test cubes.  Try using the interactive PVRTexTool for one of those.  I did the bat version_co_ but also think the node version only did one face textures too._lt_br /_gt_\n\t \n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"Deltakosh","Date":"2018-06-13T18:03:36Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\tPlease let me know if you need help fixing the engine_dd_ In this case pelase create an issue with repro for each case and I_t_ll dig into it (not sure when as I_t_m swamped in the particles improvements _lt_span_gt__dd_))_lt_/span_gt_\n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"gamefan","Date":"2018-06-14T04:39:10Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\t_lt_a contenteditable_eq__qt_false_qt_ data-ipshover_eq__qt__qt_ data-ipshover-target_eq__qt_http_dd_//www.html5gamedevs.com/profile/8492-jcpalmer/?do_eq_hovercard_qt_ data-mentionid_eq__qt_8492_qt_ href_eq__qt_http_dd_//www.html5gamedevs.com/profile/8492-jcpalmer/_qt_ rel_eq__qt__qt__gt_@JCPalmer_lt_/a_gt__lt_br /_gt_\n\t1.) Yes_co_ createFromBase64String not usable while compressed Textures being enabled. I will see if I can make a PR_co_ will be my first. _lt_span class_eq__qt_ipsEmoji_qt__gt_😀_lt_/span_gt_Exciting._lt_br /_gt_\n\t_lt_br /_gt_\n\t2.) Even when onload from original call is passed_co_ _lt_a href_eq__qt_https_dd_//github.com/BabylonJS/Babylon.js/blob/master/src/Engine/babylon.engine.ts#L4193_qt_ rel_eq__qt_external nofollow_qt__gt_onLoad_lt_/a_gt_ is not added to the loaded observable in case of a fallback. But I am guessing allowing this is not straightforward_co_ and could affect other cases._lt_br /_gt_\n\t_lt_br /_gt_\n\t3.) Will try the pvrTextTool. Actually I have the gulp task run through all my folders to make these compressed textures. This treated the cubeTextures the same way it treated other images._lt_br /_gt_\n\t_lt_br /_gt_\n\t_lt_a contenteditable_eq__qt_false_qt_ data-ipshover_eq__qt__qt_ data-ipshover-target_eq__qt_http_dd_//www.html5gamedevs.com/profile/4442-deltakosh/?do_eq_hovercard_qt_ data-mentionid_eq__qt_4442_qt_ href_eq__qt_http_dd_//www.html5gamedevs.com/profile/4442-deltakosh/_qt_ rel_eq__qt__qt__gt_@Deltakosh_lt_/a_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\tI have 1 and 2 working with some changes (not sure if they are fool proof).\n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"gamefan","Date":"2018-06-14T08:22:49Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\t_lt_a contenteditable_eq__qt_false_qt_ data-ipshover_eq__qt__qt_ data-ipshover-target_eq__qt_http_dd_//www.html5gamedevs.com/profile/8492-jcpalmer/?do_eq_hovercard_qt_ data-mentionid_eq__qt_8492_qt_ href_eq__qt_http_dd_//www.html5gamedevs.com/profile/8492-jcpalmer/_qt_ rel_eq__qt__qt__gt_@JCPalmer_lt_/a_gt_ _lt_a contenteditable_eq__qt_false_qt_ data-ipshover_eq__qt__qt_ data-ipshover-target_eq__qt_http_dd_//www.html5gamedevs.com/profile/4442-deltakosh/?do_eq_hovercard_qt_ data-mentionid_eq__qt_4442_qt_ href_eq__qt_http_dd_//www.html5gamedevs.com/profile/4442-deltakosh/_qt_ rel_eq__qt__qt__gt_@Deltakosh_lt_/a_gt__lt_br /_gt_\n\tI made a PR _lt_span class_eq__qt_ipsEmoji_qt__gt_😊_lt_/span_gt_. Fixed 1 and 2 with as little change as possible. Tested both cases_co_ I hope this addresses the issues correctly.\n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"Deltakosh","Date":"2018-06-14T16:05:54Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\tmerged and thank you _lt_span_gt__lt_img alt_eq__qt__dd_)_qt_ data-emoticon_eq__qt_true_qt_ height_eq__qt_20_qt_ src_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/default_smile.png_qt_ srcset_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/smile@2x.png 2x_qt_ title_eq__qt__dd_)_qt_ width_eq__qt_20_qt__gt__lt_/span_gt_\n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"gamefan","Date":"2018-06-15T04:15:12Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\tNo!!!! Thank you_co_ sir._lt_br /_gt_\n\tWow_co_ _lt_span class_eq__qt_ipsEmoji_qt__gt_🤩_lt_/span_gt_Uncontainable happiness. Feels so nice.\n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"gamefan","Date":"2018-06-21T08:57:37Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\t_lt_a contenteditable_eq__qt_false_qt_ data-ipshover_eq__qt__qt_ data-ipshover-target_eq__qt_http_dd_//www.html5gamedevs.com/profile/8492-jcpalmer/?do_eq_hovercard_qt_ data-mentionid_eq__qt_8492_qt_ href_eq__qt_http_dd_//www.html5gamedevs.com/profile/8492-jcpalmer/_qt_ rel_eq__qt__qt__gt_@JCPalmer_lt_/a_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\tGot CubeTextures to work with a _lt_a href_eq__qt_https_dd_//github.com/BabylonJS/Babylon.js/pull/4586/commits/6d89229a7b7c4aac68d51728b852097f540af700_qt_ rel_eq__qt_external nofollow_qt__gt_small change_lt_/a_gt_. Interestingly they do not require y flipping.\n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"JCPalmer","Date":"2018-06-22T16:52:40Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\t_lt_a contenteditable_eq__qt_false_qt_ data-ipshover_eq__qt__qt_ data-ipshover-target_eq__qt_http_dd_//www.html5gamedevs.com/profile/18203-gamefan/?do_eq_hovercard_qt_ data-mentionid_eq__qt_18203_qt_ href_eq__qt_http_dd_//www.html5gamedevs.com/profile/18203-gamefan/_qt_ rel_eq__qt__qt__gt_@gamefan_lt_/a_gt__co_  That_t_s great!  Must say_co_ I do not remember writing this.  Not Y flipping is good to know.  However_co_ only being in a post in the Bugs section is not ideal.  Many people search at the _qt_questions_qt_ sub-forum.  That documentation repo is a monster.\n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"gamefan","Date":"2018-07-13T12:18:21Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\t@JCPalmer I think I will get my hands on the doc repo.\n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"}]