All Projects → caosdoar → Fornos

caosdoar / Fornos

GPU Texture Baking Tool

Projects that are alternatives of or similar to Fornos

Limonengine
3D FPS game engine with full dynamic lighting and shadows
Stars: ✭ 331 (+303.66%)
Mutual labels:  game-development, 3d
Engine Native
Native engine for Cocos Creator
Stars: ✭ 488 (+495.12%)
Mutual labels:  game-development, 3d
Cpp 3d Game Tutorial Series
C++ 3D Game Tutorial Series is a YouTube tutorial series, whose purpose is to help all those who want to take their first steps in the game development from scratch.
Stars: ✭ 400 (+387.8%)
Mutual labels:  game-development, 3d
Babylon.js
Babylon.js is a powerful, beautiful, simple, and open game and rendering engine packed into a friendly JavaScript framework.
Stars: ✭ 15,479 (+18776.83%)
Mutual labels:  game-development, 3d
Pixels
A tiny hardware-accelerated pixel frame buffer. 🦀
Stars: ✭ 555 (+576.83%)
Mutual labels:  game-development, gpu
Glas
WebGL in WebAssembly with AssemblyScript
Stars: ✭ 278 (+239.02%)
Mutual labels:  game-development, 3d
Open3d
Open3D: A Modern Library for 3D Data Processing
Stars: ✭ 5,860 (+7046.34%)
Mutual labels:  3d, gpu
Zengine
2D | 3D Game development library
Stars: ✭ 145 (+76.83%)
Mutual labels:  game-development, 3d
Silk.net
The high-speed OpenAL, OpenGL, Vulkan, and GLFW bindings library your mother warned you about.
Stars: ✭ 534 (+551.22%)
Mutual labels:  game-development, 3d
Hedera
paint 3D ivy in the Unity Editor, watch procedurally generated meshes simulate growth and clinging in real-time
Stars: ✭ 526 (+541.46%)
Mutual labels:  game-development, 3d
Dust3d
🐪 Dust3D is a cross-platform open-source 3D modeling software. Auto UV unwrapping, auto rigging with PBR Material support, pose and motion authoring all in one.
Stars: ✭ 2,263 (+2659.76%)
Mutual labels:  game-development, 3d
Spaceshipgenerator
A Blender script to procedurally generate 3D spaceships
Stars: ✭ 6,992 (+8426.83%)
Mutual labels:  game-development, 3d
Fxgl
Stars: ✭ 2,378 (+2800%)
Mutual labels:  game-development, 3d
Ultralight
Next-generation HTML renderer for apps and games
Stars: ✭ 3,585 (+4271.95%)
Mutual labels:  game-development, gpu
Texture Compressor
CLI tool for texture compression using ASTC, ETC, PVRTC and S3TC in a KTX container.
Stars: ✭ 156 (+90.24%)
Mutual labels:  game-development, gpu
Etengine
Realtime 3D Game-Engine with a focus on space sim. Written in C++ 14
Stars: ✭ 408 (+397.56%)
Mutual labels:  game-development, 3d
Gamedev Resources
🎮 🎲 A wonderful list of Game Development resources.
Stars: ✭ 2,054 (+2404.88%)
Mutual labels:  game-development, 3d
Gplayengine
Cross-platform C++ 2D / 3D game engine.
Stars: ✭ 129 (+57.32%)
Mutual labels:  game-development, 3d
Roygbiv
A 3D engine for the Web
Stars: ✭ 499 (+508.54%)
Mutual labels:  game-development, 3d
Acid
A high speed C++17 Vulkan game engine
Stars: ✭ 838 (+921.95%)
Mutual labels:  game-development, gpu

fornos

GPU Texture Baking Tool

A fast and simple tool to bake your high-poly mesh details to textures.

Bakers

Mesh formats

  • Wavefront OBJ

Image formats

  • PNG
  • TGA
  • EXR

Usage

Common steps

1. Select a low poly mesh file to bake to

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.

2. Select a high poly mesh file to bake from

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)

3. Select a target texture size

This is the size of all textures baked

4. Enable any bakers

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.

5. Configure the bakers options

Each baker is explained in detail below

6. Bake!

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.

Height baker

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.

Position baker

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.

Normals baker

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.

Ambient Occlusion baker

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 baker

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.

Thickness baker

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.

Known issues

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.

Ackownledgements

This project is possible thanks to the following libraries:

Most of the intersection algorithms comes from Game Physics Cookbook

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].