[SOLVED] HDRI cubemaps (PBR)

RGB channels are automatically used for normal maps. But you can assign the same texture to gloss and select A. That works fine, providing there is a valid alpha channel in the image.

1 Like

PNG behaviour in Photoshop is a bit weird: https://helpx.adobe.com/experience-manager/scene7/kb/base/transparency-alpha-channel/layer-transparency-masks-alpha-channels.html#Transparencyandalphachannelsandpng

…but it seems to work! cool!

Here’s a little test http://playcanv.as/p/FQdF3akW/
with some quite amazing looking scanned textures from http://www.cgrecord.net/2016/07/download-free-photogrammetry-tile.html?m=1 and a HDRI from http://www.hdrlabs.com/sibl/archive.html

Move close to the textures!

3 files exported:


PNG can’t store “custom layers”, it is only classic Grayscale, RGB or RGBA, and some bits variation.
So I assume in Photoshop you’ve used “Alpha” channel, instead of actually doing Alpha of an image.

If you copy your alpha image, then select layer with Normals, add mask, then Alt + Click on mask thumbnail in layers, and then paste previously copied alpha. That will actually do alpha properly for you.

1 Like

That’s what I did, and it worked, see test. Only thing is the thumbnail preview is wrong.

Hi Dave, I’m only used to equirectangular HDRI maps. would you know of a tool that can convert them into cubemaps retaining the high dynamic range?


  • Björn

cmftStudio is the tool I use to convert cubemaps into 6 images.

Yes, stupid me, I tried that tool now and it seems to do the trick. At first I thought it only took cross images as input but it chews equirectangular aswell. Thanks!

When I upload HDR-files for the faces of the cubemap, they get converted/duplicated as .PNG on import. Can I still use the HDR-files as sides in the cubemap?

The PNG’s that are generated from HRD’s are “special” type PNG’s, that store HDR data in RGBM format using 4 channels (RGBA).
This is because WebGL by default does not support HDR texture formats :slight_smile:
So feel free to use those PNG’s, they are “HDR” ones.

1 Like

Hello, @Mr_F @dave
Does the editor itself handle the converting (HDR->rgbm(png)) on the client or handled by the server, when I upload a .hdr file ? thanks very much!!! :slight_smile:

HDR->RGBM conversion happens on server.

1 Like

I am finding my cubemaps are scaled up to about twice what they should be, any tips on the rendering of the cubemap in a 3d program

Currently I use 3ds max with Corona render, I use the Corona spherical render to make the HDRI 360 pano
I render at 2048 X 1024 pixels, save an HDR file, and them go into cmft studio and convert that to 6 HDR images

They look like they should, except the scale it huge

I show my settings for it all in this post:

Sorry for posting all over about this, I reached out to support too to see if I could get some feedback on what I might do better in my pipe line to get the scale working. I haven’t gotten any feed back and deadlines are fast approaching :slight_smile:

1 Like

Shouldnt we able to use the .dds file created the cmftstudio ?

Is PlayCanvas engine using a proprietary DDS extension or something that requires uploading 6 images to playcanvas server and the PlayCanvas Server converts the six image into dds.

Imm just asking because i saw a few post by @dave where he uses cmftstufio to convert a HDR panorama image into 6 separate images to be converted to pre filtered dds on playcanvas server.

Why cant you just make the .dds right there in cmftsudio and use the .dds file directly ???

Yo @Mr_F … Hey bro can you please explain a bit more the process of loading a dds using the engine only.

Above you save:

If you use engine locally without editor/server, you already can load fp32 DDS files, filter them, encode to RGBM and add edge fixup.

But wouldn’t all that stuff be done in the software your using to make .dds. If not… Can you please show a couple lines to load a .dds SKYBOX produced with cmftstudio .

The following is what i am currently using to load dds files… I can only load OTHER dds files i find in the various examples, but i can seem to load and dds i create my self using cmftstudo as RGBA32F

 * Backing Script Class
 * @class SkyboxController
class SkyboxController extends CanvasScript implements ScriptType {
    public initialize():void {

        this.app.assets.loadFromUrl("scenes/sunset_sky.dds", "texture", (error, asset:pc.Asset) => {
            const texture = asset.resource as pc.Texture;



            return null;

    public update(delta: number):void {


can you please show me what you mean by:

you already can load fp32 DDS files, filter them, encode to RGBM and add edge fixup.

And do have any suggestions on getting the engine to load a .dds file procuded by cmftStudio ???

Yes, we have filtering in the engine, so you don’t have to use Lys.
We do support HDR cubemaps (both Star-Lord and Seemore demo used them), we just need to prepare server for handling various HDR file formats. If you use engine locally without editor/server, you already can load fp32 DDS files, filter them, encode to RGBM and add edge fixup.
Right now we’re just integrating those things into editor/server.

Final pipeline will be:

import 6 images
assign these to cubemap asset
press to filter
And later we’re going to add environment probe areas which would automatically assign cubemaps to objects based on their position.

Are the probes still going to happen?
Could really use them really soon :slight_smile:

what are the configurations for prefiltering HDR or EXR files directly with cmft and producing a DDS file equal to the one generated by the online editor?

I don’t know, but if you want to inspect the prefiltering code, it’s here:

1 Like

I heard probes aren’t happening / or are on hold. Is that still the case?
Are they still on the road map?

The make your own cubemaps workflow sucks if you don’t use Vray and that cubemap script. We Use Corona and CFMT studio and it isn’t easy nor are the results that great, in terms of results and scaling being very tough to dial in.