Hi,
About textures: yes, 3DVIA does support floating textures, cubemaps and volumetric textures (3D).
The way you can access it and create it really depends on what you want to do with it (use an existing texture ? dynamic creation as a render target ? dynamic creation as a parametric texture ?).
If you just want to import an existing texture, then just drag & drop the file inside Studio project using .dds fileformat properly formated.
- For floating textures, then you will be able to directly take advantage of HDR values activating HDR mode in the viewport, or read custom floating values inside custom shader, etc...
- For cubemaps, as said Iain if you drag & drop a .dds cube map then you could directly use it as cube reflection texture, or also as Ambiant Light IBL map for instance. You could have floating cube maps for HDR IBL (check Libraries / Presets / Lights / Hangar IBL Light sample)
- For 3D texture, I think it also work to drag & drop it as .dds (never tester though). But I don't think we deliver a ready to use 3D texture shader, so you may need to write it.
If you need to create those textures dynamically, then it depends on what you want to do ?
Example for creating a RenderTexture (texture to be used as target of a viewport) in VSL:
- Floating:
vkRenderTexturePtr texture = vkRenderTexture::CreateInstance();
texture.SetObjectID("float");
texture.Setup(map_size_x, map_size_y, 1, ePF_128_FLOAT_RGBA, vkRenderTexture::fRt2D);
then use it as target texture for a given viewport (vkViewport::SetTexture)
- Cubemap:
vkRenderTexturePtr texture = vkRenderTexture::CreateInstance();
texture.SetObjectID("floatTexture");
texture.Setup(map_size_x, map_size_y, 1, ePF_24_RGB_888, vkRenderTexture::fRtCube);
Then only way to fill a CubeMap in VSL is to create 6 viewports that each will render inside a cube face using index param of CreateInstance method:
vkViewport viewportFace01 = vkViewport::CreateInstance(texture, null, vkIRect(0, 0, map_size_x, map_size_y), 0);
vkViewport viewportFace02 = vkViewport::CreateInstance(texture, null, vkIRect(0, 0, map_size_x, map_size_y), 1);
...
vkImage::CreateCubeMap() is not bound in VSL, so you must use SDK if you really want to "manually" fill cube maps pixels without using viewport rendering.
- Volume:
vkRenderTexturePtr texture = vkRenderTexture::CreateInstance();
texture.SetObjectID("VolumeTexture");
texture.Setup(map_size_x, map_size_y, 1, ePF_24_RGB_888, vkRenderTexture::fRtVolume);
I don't think you could fill these texture using VSL, so this code is probably not usable..
vkImage::CreateVolume() is not bound in VSL, so you must use SDK if you really want to create a volume texture dynamically.
Hope it helps, I try to post a sample soon,
Cheers,
Arnaud.