IFC supports three types of texture mappings:
-
UV (i.e. explicit coordinates)
-
COORD (Blender calls this Generated)
-
COORD-EYE (Blender calls this Camera - this is not very useful though)
We can save UV data, but we can't load it since the C++ geometry iterator hasn't implemented it. We need to get @aothms on a train for this to happen :) Feel free to vote here: https://github.com/IfcOpenShell/IfcOpenShell/issues/2021
As for COORD, in theory we can store a texture transformation (i.e. Blender's mapping node) but this is not yet implemented. See https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcSurfaceTexture.htm however I have yet to do tests to see exactly what this means in the Blender world. For now, COORD works well for simple "plonk this rectangle image on this rectangle plane" which covers basic usecases like signage, decals, X-plane tree entourage, etc.
However note that although the docs say the transformation affects the texture coordinates, I don't really think they do (I did quite a bit of work on the shader aspect of the IFC spec, and this is definitely un-battle-tested territory), since they are a 2D transformation. i.e. they cannot rotate say a 2D texture onto the Y axis of a brick wall. Also, we are restricted to using the "Generated" coordinate instead of "Object" or other things. This is because there is actually no standard on "magic texture coordinates" in the CG world. You know how Blender has "Flat / Box / Sphere / Tube" in the image texture node? That's Blender magic. Every 3D software has their own magic. The only thing you can trust is UV maps. I don't think it's possible to do what's in your screenshot because that relies on a rotation along the local X axis. See screenshot where we have a 90 degree rotation, which therefore breaks the image on a single plane. Also notice how the texture is squashed on short walls and stretched on longer walls - that is because the texture coordinates are Generated (i.e. 0 to 1 along the +Y axis). What you want for bricks is "Object" coordinates.

Now we get more fun, because walls are actually not meshes. UV maps only kinda work easily / obviously on meshes. For parametric solids (such as walls which are typically extrusions) they have their own rules like this: https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcExtrudedAreaSolid.htm#Figure-8.8.3.14.C-Extruded-area-solid-textures - which is just a ton of work to implement and needs to be done in C++ (and also then accommodate boolean clippings and curves and oh-so-much work).
So I think the practical solution is to not use IFC glTF textures for this right now, and instead use external textures. Then you can use object coords / rotation mapping easily.