{"id":13732028,"url":"https://github.com/caosdoar/Fornos","last_synced_at":"2025-05-08T06:31:06.662Z","repository":{"id":67233198,"uuid":"121902785","full_name":"caosdoar/Fornos","owner":"caosdoar","description":"GPU Texture Baking Tool","archived":false,"fork":false,"pushed_at":"2018-12-21T23:14:53.000Z","size":872,"stargazers_count":108,"open_issues_count":3,"forks_count":23,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-08-04T02:10:43.936Z","etag":null,"topics":["3d","bent-normals","game-development","gpu","height-baker","normals-baker","textures","thickness-baker"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/caosdoar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-02-17T23:55:24.000Z","updated_at":"2024-07-17T15:00:38.000Z","dependencies_parsed_at":"2024-01-31T04:12:37.189Z","dependency_job_id":"f14dd2af-0b08-4692-bc8f-0a184a23ec6c","html_url":"https://github.com/caosdoar/Fornos","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caosdoar%2FFornos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caosdoar%2FFornos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caosdoar%2FFornos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caosdoar%2FFornos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caosdoar","download_url":"https://codeload.github.com/caosdoar/Fornos/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224707598,"owners_count":17356362,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","bent-normals","game-development","gpu","height-baker","normals-baker","textures","thickness-baker"],"created_at":"2024-08-03T02:01:44.291Z","updated_at":"2024-11-14T23:30:49.571Z","avatar_url":"https://github.com/caosdoar.png","language":"C++","readme":"# fornos\n\nGPU Texture Baking Tool\n\nA fast and simple tool to bake your high-poly mesh details to textures.\n\n## Bakers\n\n- [Height](#height-baker)\n- [Position](#position-baker)\n- [Normals](#normals-baker)\n- [Ambient Occlusion](#ambient-occlusion-baker)\n- [Bent Normals](#bent-normals-baker)\n- [Thickness](#thickness-baker)\n\n## Mesh formats\n\n- Wavefront OBJ\n\n## Image formats\n\n- PNG\n- TGA\n- EXR\n\n## Usage\n\n### Common steps\n\n#### 1. Select a low poly mesh file to bake to\n\nThis is the \"destination\" mesh. It must have UV coordinates and normal data.\n\nThe UV coordinates will be used to generate the baked meshes.\n\nThe 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.\n\nNormals can be computed by fornos if \"compute per face\" or \"compute per vertex\" is selected.\n\n#### 2. Select a high poly mesh file to bake from\n\nThis is te \"target\" mesh. Your high resolution mesh where the details will be extracted from.\n\nUV coordinates are not required but normals are necessary by some of the bakers (normals, ambient occlusion, bent normals and thickness)\n\n#### 3. Select a target texture size\n\nThis is the size of all textures baked\n\n#### 4. Enable any bakers\n\nCheck the box on the right of any of the bakers to enable them for the baking process.\n\nIt 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.\n\n#### 5. Configure the bakers options\n\nEach baker is explained in detail below\n\n#### 6. Bake!\n\nClick the bake button.\n\nThis 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.\n\n### Height baker\n\nCreates a height map with the differences between your low-poly and hi-poly meshes.\n\nSupports 8-bit (PNG and TGA) and EXR file formats as outputs.\n\n### Position baker\n\nCreates an image with the mapped positions in the high-poly mesh.\n\nThis is useful for some processing tools like Unity3d's Delighting Tool.\n\nOnly EXR file format is supported as output.\n\n### Normals baker\n\nCreates a normal map.\n\nIf 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. \n\n**Tangent space**: If checked the normals will be transformed to tangent space. The output will be ino bject space otherwise.\n\n### Ambient Occlusion baker\n\nComputes the ratio of occluders in a number of samples for a cosine weighted hemisphere. A.k.a. your usual ambient occlusion map.\n\nSupports 8-bit (PNG and TGA) and EXR file formats as outputs.\n\n**Sample count**: Number of samples used for each pixel. The greater the number, the better and the slower.\n\n**Min distance**: Minimum distance to consider an occluder. In mesh units.\n\n**Max distance**: Maximum distance to consider an occluder. In mesh units.\n\n### Bent Normals baker\n\nBent normals are the average direction of the ambient light.\n\nThis is computed as an average of the direction of the non occluded rays, very similar as how ambient occlusion is computed.\n\nFor correct visualization engines usually requires matching parameters between ambient occlusion and bent normals. \n\nMore information about bent normals in the [Unreal Engine documentation](https://docs.unrealengine.com/latest/INT/Engine/Rendering/LightingAndShadows/BentNormalMaps/).\n\nIf 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. \n\n**Sample count**: Number of samples used for each pixel.\n\n**Min distance**: Minimum distance to consider an occluder. In mesh units.\n\n**Max distance**: Maximum distance to consider an occluder. In mesh units.\n\n### Thickness baker\n\nGenerates a map of how thick is in average the mesh for a point in the surface.\n\nThis map is useful for translucency and sub-surface scattering effects.\n\nSupports 8-bit (PNG and TGA) and EXR file formats as outputs.\n\n**Sample count**: Number of samples used for each pixel.\n\n**Min distance**: Distance for the thickness value to be zero. In mesh units.\n\n**Max distance**: Distance for the thickness value to be one. In mesh units.\n\n\n## Known issues\n\nThe 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.\n\n## Ackownledgements\n\nThis project is possible thanks to the following libraries:\n\n- [GLFW](http://www.glfw.org)\n- [glad](http://glad.dav1d.de)\n- [imgui](https://github.com/ocornut/imgui)\n- [tinyexr](https://github.com/syoyo/tinyexr)\n\nMost of the intersection algorithms comes from [Game Physics Cookbook](https://github.com/gszauer/GamePhysicsCookbook)","funding_links":[],"categories":["Graphics"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaosdoar%2FFornos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaosdoar%2FFornos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaosdoar%2FFornos/lists"}