tfg.rendering.texture.mipmap.map_texture

Maps the texture texture_image using uv_map with mip-mapping.

The convention we use is that the origin in the uv-space is at (0, 0), u corresponds to the x-axis, v corresponds to the y-axis, and the color for each pixel is associated with the center of the corresponding pixel. E.g. if we have a texture [[1, 2], [3, 4]], then the uv-coordinates that correspond to the values 1, 2, 3, and 4 are (0.25, 0.75), (0.75, 0.75), (0.25, 0.25), (0.75, 0.25), respectively. You can see that the v-axis starts from the bottom of the texture image as would be in cartesian coordinates and that by multiplying the uv-coordinates with the length of the texture image, 2, you can recover the pixel centers in this case, e.g. (0.25, 0.25) * 2 = (0.5, 0.5) corresponds to the bottom-left pixel color that is 3.

If the aspect ratio of the texture is not 1, the texture is compressed to fit into a square.

Note that all shapes are assumed to be static.

uv_map A tensor of shape [A1, ..., An, H, W, 2] containing the uv coordinates with range [0, 1], height H and width W.
texture_image An optional tensor of shape [H', W', C] containing the texture to be mapped with height H', width W', and number of channels C of the texture image.
mipmap_images Optional list containing the original texture image at multiple resolutions starting from the highest resolution. If not provided, these are computed from texture_image and hence, texture_image needs to be provided in that case. If both texture_image and mipmap_images are provided, mipmap_images are used and texture_image is ignored.
num_mipmap_levels An optional integer specifying the number of mipmap levels. Each level is computed by downsampling by a factor of two. If mipmap_images is provided, num_mipmap_levels is comptued as its length.
tiling If enabled, the texture is tiled so that any uv value outside the range [0, 1] will be mapped to the tiled texture. E.g. if uv-coordinate is (0, 1.5), it is mapped to (0, 0.5). When tiling, the aspect ratio of the texture image should be 1.
name A name for this op that defaults to "mipmap_map_texture".

A tensor of shape [A1, ..., An, H, W, C] containing the interpolated values.

ValueError If texture_image is too small for the mipmap images to be constructed.