Krita doesn't work with the new format yet.

Though this release adds support for the new JPEG-XL format, which supports animation, exporting and importing animations in this format gives incorrect results. A fix is pending.

But XnViewMP and GIMP know about it.

I get artifacts when saving from .jpg:

Megalomaniak open standards, IMO are always preferable.

Yes, I agree, but with something like an image format, I think wide compatibility may win out. In any case JPEG XL is BSD License and royalty free, so I don't see any issue there.

The DDS format can be a handy one. Not only does it store many different GPU pixel formats, but it can do block compressed (the various GPU compressed texture formats), cube maps, voxels and custom mip maps.

I might need to do some source digging though, Godot's docs claim to handle loading custom mip maps from DDS files, but it fails on a DDS I've been using since the Ogre3D days.

The interesting thing about QOI for me is the claimed 20-50 times encoding performance vs png. Being able to quickly encode a lossless image for things like frame capture could be useful.
Plus the fact that the entire reference implementation is a single 669 line C header (a third of which is documentation) with no dependencies means it looks damn easy to integrate into small projects or rewrite directly in other languages.

    Actually, now that I read the website it does look pretty cool. At least for like hobby projects, I'm not sure how useful it would be for production or anything serious. From what I can see, the advantage is in the encoding time, which is pretty impressive. Mostly this is not an issue, but I guess for rendering image sequences that could be useful. Though the file size is slightly more than PNG. So it terms of game development, I'm not sure it matters much. Unless you are batch converting all the assets in a game, exporting a single PNG, even at 4K res, only takes a few seconds. Plus, there would need to be a lot more tooling for exporters and importers and all kinds of stuff. So I don't think it will be that popular, outside of hobby stuff.

    What do you guys think of early access paid tutorial?

    Basically, the tutorial covers the basic gameplay, UI, and SFX & Music, but the advanced gameplay is still work-in-progress and will be uploaded later.

    Yeah, that could work. You could always release like the first video on YouTube for free, and then have paid access on your own site.

      cybereality

      Yeah, that's what I think.

      I have this tutorial that I want to upload on Udemy, but the advanced stuff is taking too long. So I thought "Just upload the basic stuff, the advanced stuff comes later."

      Maybe I should stay quiet about the advanced stuff. I can make it a surprise for the students.

      Check out wingfox. It's mostly for artists, but they have some programming stuff too. The way it works is you can start a course and raise funds (even with like 1 video) and then you have to post a new video every week until it's finished. But the customers pay the full price. Granted, it's pretty high end, so I'm not sure everyone is accepted, but it might be worth checking out.

      https://www.wingfox.com/c/8609

      cybereality Usually when the editor knows the class type it gives you hints for what the func input parameters are.

      On another note, does anyone know the name of the material parameter that allows the material to be drawn on top of everything else? I have been looking for quite some time, it's eluding me.

        Erich_L the material to be drawn on top of everything else

        There is a Render Priority, but I think it only has an affect on transparent materials (lower numbers are rendered on top). You can also look under Flags for No Depth Test. This may be what you are looking for, though it usually ends with strange results.

        Erich_L Usually when the editor knows the class type it gives you hints for what the func input parameters are.

        It works for me:

          cybereality Yes, that also works for me if the function is on the same script. Godot defined classes have their hints show up consistently, I guess just not user defined class functions, or maybe there's still something I'm missing.

          Thankyou, I think it No Depth Test does it. I am getting pretty frustrated with this label to viewport projecting on a sprite 3D workflow, I have it working in its own scene, nothing showing up in the main scene, and it turning black on launch. Kinda wish there was just a Text3D node.

          Threw the whole thing away and started over and got it working. Thanks again.

            Erich_L Kinda wish there was just a Text3D node.

            this is implemented in 3.5rc2+ as Label3D

              Kojack
              Seems the DDS custom mip map issue is that Godot assumes a specific number of mipmaps based on the resolution, while the format itself allows a different number of mipmaps. Mine had 7 mip maps, Godot was expecting 10.
              It was created with the official Microsoft DirectX texture tool, I assume they know their own format. πŸ™‚
              Remaking it with the expected number lets it work.

              The point of the test texture I have is each mip map is colour coded. For example first mip map is 512x512 solid red. Second is 256x256 solid green, etc. When you put it on a mesh, the colours you see represent which mip levels are being viewed. If you never see red on the mesh, it means 512x512 is a waste of resolution. (The new one I made is 13 mips with 4096x4096 at the top)

              DDS would have been okay but there was almost no decent tooling. I tried KTX as well, which was also cool (made by Khronos) but, again, no tools.

              spacecloud woot! I can’t wait for this. It looks like 3.5 is getting pretty close too

              I've got 110,911 dds files on my hard drive. πŸ™‚
              Lots of games use them. Nvidia and Microsoft make tools for them (like photoshop plugin and stand alone), every game engine (that I've used) supports them. But I guess non Windows developers might not have as much, since DDS (Direct Draw Surface) is pretty much a header then a raw dump of a Direct3D texture from memory. It may take a little more code to load them in OpenGL if you don't want to simply convert them to a simpler internal format in the loader.

              Of course "right tool for the job" and all that.
              Jpeg compresses well on disk, but is lossy, expands to raw in memory and doesn't support alpha channels.
              PNG compresses ok-ish, is lossless and has alpha channels (and things like deep colour modes), but also raw in memory.
              DDS can store ST3C style block compressed formats (the kind that stay compressed on the GPU), voxels and 6 face cube maps, plus less common formats (like RGBA4444).
              GIF is paletted (stores pixels as an index into a palette of up to 256 colours, instead of as colours directly) and supports animation.
              EXR for high dynamic range images.

              Block compressed textures use RGB565 (16 bit colour) so can look crappy, depending on the texture. (Technically for most of the BC formats each 4x4 block is paletted, with a palette of 2 user specified RGB565 colours and 2 interpolated RGB888 colours between the user specified ones). Godot converts textures into block compressed format internally when you set a texture to VRAM compression.

              From the Godot docs, the actual types stored in an exported project are going to be raw, webp, png or st3c/pvrtc. If you put a jpg in a project, and set it to lossy compressed mode in the importer, it will be stored as a webp.

              I used to have my own format that was 192 bit colour (double precision float per channel) in a tiled format for handling massive images bigger than memory. Yeah, overkill for pre-2000 rendering, but it was fun. πŸ™‚

              Yeah, for sure. When I was using DDS it was with a custom DirectX11 engine I was writing. I did go with it, only because it worked best with the Microsoft APIs and I needed it for efficient cubemapping. But the tools were poor. I think there was a Photoshop Plug-In, but it hadn't been updated, or didn't work with the latest version of PS at the time, or something, can't recall exactly. I think there was a Microsoft tool I used.

              When I switched to Vulkan, I was on Linux and kind of trying to get away from Microsoft, so I attempted with KTX, which is like the OpenGL version of DDS. It's actually a decent format, but the tools were not great. I think I had to use a command-line convertor or there was some random third party app. But I decided it was too much effort, so I just switched to using standard formats like JPG and did the mipmapping/cubemapping in code. So not the end of the world, but I would prefer if there was just standard support in apps like Photoshop, GIMP, etc. without using strange tools.

              In any case, I think JPEG XL is the future. I know Godot supports WebP already, and they are quite similar in performance and file size, but I think JPEG XL has a lot of potential. Aside from the quality and file size (which is as good as WebP and far better than JPG/PNG) it also has transparency, high quality animation, and really high levels of depth, HDR, multiple layers, etc. You should read this blog post to see why it's probably the last image format we will ever need in our lifetime (disregarding stuff like holography or lightfields, I mean as a 2D image).

              https://cloudinary.com/blog/how_jpeg_xl_compares_to_other_image_codecs

              Just to show you one data point, a single image in JXL can be up to 1,073,741,823 x 1,073,741,824 with 4,100 24-bit channels. You could literally store an entire AAA PS5 game in 1 image. Granted, that's not a great idea for a lot of reasons, but you could.

              Jpeg xl is definitely interesting, but it needs more support. Chrome won't show them by default (have to turn on a flag, why?) and Firefox only allows them in nightly builds, not the standard release.

              QOI can handle 4,294,967,296 x 4,294,967,296 images. πŸ™‚
              (Although that would require something like 72 exabytes for 32bit colour without compression)