GPU Texture Baking Tool
A fast and simple tool to bake your high-poly mesh details to textures.
- Wavefront OBJ
- PNG
- TGA
- EXR
This is the "destination" mesh. It must have UV coordinates and normal data.
The UV coordinates will be used to generate the baked meshes.
The normal data is used to map points from the low-poly mesh to the high-poly mesh. It is better to use "smooth" or per-vertex normals as per-face normals can produce mappings with gaps depending on the topology.
Normals can be computed by fornos if "compute per face" or "compute per vertex" is selected.
This is te "target" mesh. Your high resolution mesh where the details will be extracted from.
UV coordinates are not required but normals are necessary by some of the bakers (normals, ambient occlusion, bent normals and thickness)
This is the size of all textures baked
Check the box on the right of any of the bakers to enable them for the baking process.
It is also necessary to select a destination file for the result of the baker. Expand the baker options by clicking on the bar and select your file. Remember to enable the baker before.
Each baker is explained in detail below
Click the bake button.
This will go through different steps, from generating a map of your low-poly mesh to process each baker. After that you will have your shinning new textures.
Creates a height map with the differences between your low-poly and hi-poly meshes.
Supports 8-bit (PNG and TGA) and EXR file formats as outputs.
Creates an image with the mapped positions in the high-poly mesh.
This is useful for some processing tools like Unity3d's Delighting Tool.
Only EXR file format is supported as output.
Creates a normal map.
If 8-bit format for the output is used the values will be stored as (value * 0.5 + 0.5). This is the format most engines will expect. If an EXR file is used the values will not be transformed.
Tangent space: If checked the normals will be transformed to tangent space. The output will be ino bject space otherwise.
Computes the ratio of occluders in a number of samples for a cosine weighted hemisphere. A.k.a. your usual ambient occlusion map.
Supports 8-bit (PNG and TGA) and EXR file formats as outputs.
Sample count: Number of samples used for each pixel. The greater the number, the better and the slower.
Min distance: Minimum distance to consider an occluder. In mesh units.
Max distance: Maximum distance to consider an occluder. In mesh units.
Bent normals are the average direction of the ambient light.
This is computed as an average of the direction of the non occluded rays, very similar as how ambient occlusion is computed.
For correct visualization engines usually requires matching parameters between ambient occlusion and bent normals.
More information about bent normals in the Unreal Engine documentation.
If 8-bit format for the output is used the values will be stored as (value * 0.5 + 0.5). This is the format most engines will expect. If an EXR file is used the values will not be transformed.
Sample count: Number of samples used for each pixel.
Min distance: Minimum distance to consider an occluder. In mesh units.
Max distance: Maximum distance to consider an occluder. In mesh units.
Generates a map of how thick is in average the mesh for a point in the surface.
This map is useful for translucency and sub-surface scattering effects.
Supports 8-bit (PNG and TGA) and EXR file formats as outputs.
Sample count: Number of samples used for each pixel.
Min distance: Distance for the thickness value to be zero. In mesh units.
Max distance: Distance for the thickness value to be one. In mesh units.
The current project is at an usable state but as a very early preview. Crashes can be expected, memory consumption can be high for large textures or big meshes, and there is barely any error reporting to the user.
This project is possible thanks to the following libraries:
Most of the intersection algorithms comes from Game Physics Cookbook