Shaders Using samplerCube in GMS2


SamplerCubes are a GLSL feature that allows you to group 6 2D textures together to form a cube (1 texture for each face). You can then use GLSL's textureCube function with a directional vector to grab a color from inside the cube.
Usually in order to use the textureCube function, the user first needs to create a samplerCube object and pass it into the shader. However, GMS2 seems to lack this functionality (at least from what I can see.) There are no uniform functions that allow you to create samplerCubes and pass them into the shader.
The only alternative I can think of is packing all 6 face textures into one 2D texture, then somehow converting the components of a 3D directional vector into a 2D texture coordinate in order to grab a color from the correct face.
Is this the only solution? Any tips would be greatly appreciated :)


Hey there,

as far as I am aware, what you have described is the common way of doing cube mapping in GM. If you are interested, you can find an example implementation in my repo, or if you would like to implement it yourself, you can find the official description of the ARB_texture_cube_map extension here It also contains the formula for converting 3D vector into UV (you will just have to scale them and move them around a bit, since all the sides will be in a single texture).

Good luck with you project!