ICOGRAPHICS

Credits & licenses

What these tools are built on, and the terms that come with it. Anything not listed here is original work.

Ported code

msdfgen MIT License
The SDF Generator's three-channel (MSDF) output is a port of msdfgen 1.13 by Viktor Chlumský: the edge colouring, the perpendicular-distance selectors, the edge cache and the error correction (compiled into sdf.wasm). The Font Atlas Generator runs the same port on every glyph, compiled into font.wasm, extended with msdfgen's quadratic and cubic edge segments, its overlapping-contour combiner and its distance-checked error correction so a font's outline is evaluated exactly; its four-channel MTSDF adds the true distance as alpha, msdfgen's generateMTSDF layout. The method is from his thesis Shape Decomposition for Multi-channel Distance Fields (Czech Technical University in Prague, 2015).
License text
MIT License

Copyright (c) 2014 - 2025 Viktor Chlumsky

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
MikkTSpace zlib License, and MIT License
The Texture Baker's and the Mesh Importer's tangent frames are an altered port of Morten S. Mikkelsen's reference mikktspace.c, written against the mikktspace crate's Rust translation of it and checked bit for bit against that crate (compiled into bake.wasm and mesh.wasm). It is the tangent space Blender, Unreal, Unity and glTF share, so a normal map baked here decodes the same way there. The method is from his thesis Simulation of Wrinkled Surfaces Revisited (University of Copenhagen, 2008).
License text
venus-mikktspace is an altered port of Morten S. Mikkelsen's reference
implementation of the MikkTSpace tangent space algorithm (mikktspace.c and
mikktspace.h), written against the Rust translation in the `mikktspace` crate
(https://github.com/gltf-rs/mikktspace), which serves as its test oracle. Both
notices follow.

--- mikktspace.c / mikktspace.h ---

Copyright (C) 2011 by Morten S. Mikkelsen

This software is provided 'as-is', without any express or implied
warranty.  In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not
   claim that you wrote the original software. If you use this software
   in a product, an acknowledgment in the product documentation would be
   appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
   misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

--- the mikktspace crate (MIT option of MIT/Apache-2.0) ---

Copyright (c) 2017 The mikktspace Library Developers

Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the
Software without restriction, including without
limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software
is furnished to do so, subject to the following
conditions:

The above copyright notice and this permission notice
shall be included in all copies or substantial portions
of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

Compiled code

BCn codec (bcn.wasm, bcn-simd.wasm), heightfield pipeline (heightfield.wasm, heightfield-simd.wasm), SDF generator (sdf.wasm), font atlas generator (font.wasm), texture baker (bake.wasm, import.wasm) and mesh importer (mesh.wasm) MIT License or Apache License 2.0
Original Rust code compiled to WebAssembly (the SDF and font generators' three-channel fields are the msdfgen port credited above, compiled in, and the baker's and the mesh importer's tangent frames the MikkTSpace port; the mesh importer is the venus engine's own mesh reader, tangent generator and .mesh writer, so its files are byte-identical to the engine's command-line tool's). The binaries link parts of the Rust standard library and the dlmalloc-rs allocator, both offered under either license.
ttf-parser MIT License or Apache License 2.0
Yevhenii Reizner's TrueType and OpenType parser, compiled into font.wasm to read faces, metrics, outlines and the kerning table of the font you load. Version 0.25.1.
ab_glyph_rasterizer Apache License 2.0
Alex Butler's coverage rasterizer, compiled into font.wasm to trace each glyph's outline at the raster factor before its distance field is built. Version 0.1.8.

AI depth model and runtime

The Normal Map Generator's Generate depth button loads these on first use: the fp16 model on GPUs with 16-bit shader support, the 8-bit quantized model otherwise. They come from this site when it carries its own copies, and from jsDelivr and Hugging Face otherwise. Either way the image itself is processed in your browser and never uploaded.

Depth Anything V2 Small Apache License 2.0
Lihe Yang, Bingyi Kang, Zilong Huang, Zhen Zhao, Xiaogang Xu, Jiashi Feng and Hengshuang Zhao, Depth Anything V2, arXiv:2406.09414, 2024. Served from this site as the ONNX conversion onnx-community/depth-anything-v2-small, also Apache License 2.0.
Transformers.js Apache License 2.0
Hugging Face. Loads the model and runs it on WebGPU or WebAssembly.
ONNX Runtime Web MIT License
Microsoft. The inference engine underneath Transformers.js.

Papers and algorithms

Chris Green, Improved Alpha-Tested Magnification for Vector Textures and Special Effects
SIGGRAPH 2007 course Advanced Real-Time Rendering in 3D Graphics and Games, Valve. The two-channel sharp-corner field in the SDF Generator.
Pedro F. Felzenszwalb and Daniel P. Huttenlocher, Distance Transforms of Sampled Functions
Theory of Computing 8(19), 2012. The Euclidean distance transform behind every field.
Peter Selinger, Potrace: a polygon-based tracing algorithm
2003. The turn policy for tracing pixel boundaries and the placement of corner apexes at the intersection of fitted edge lines. The paper's ideas only; no Potrace code is used.
Dmitry Chetverikov and Zsolt Szabó, A simple and efficient algorithm for detection of high curvature points in planar curves
Proceedings of the 23rd Workshop of the Austrian Pattern Recognition Group, 1999. Corner detection on traced contours.
David H. Douglas and Thomas K. Peucker, Algorithms for the reduction of the number of points required to represent a digitized line or its caricature
Cartographica 10(2), 1973. Contour simplification.
Jukka Jylänki, A Thousand Ways to Pack the Bin: A Practical Approach to Two-Dimensional Rectangle Bin Packing
2010. The skyline bottom-left heuristic that packs the glyph boxes into the font atlas.
Bruce Walter, Stephen R. Marschner, Hongsong Li and Kenneth E. Torrance, Microfacet Models for Refraction through Rough Surfaces
Eurographics Symposium on Rendering, 2007. The GGX shading in the Normal Map Generator's and the Texture Baker's lit previews.
Tomas Möller and Ben Trumbore, Fast, Minimum Storage Ray-Triangle Intersection
Journal of Graphics Tools 2(1), 1997. Every ray the Texture Baker casts.
Ingo Wald, On fast Construction of SAH-based Bounding Volume Hierarchies
IEEE Symposium on Interactive Ray Tracing, 2007. The binned surface-area heuristic that builds the baker's BVH.
Tom Duff, James Burgess, Per Christensen, Christophe Hery, Andrew Kensler, Max Liani and Ryusuke Villemin, Building an Orthonormal Basis, Revisited
Journal of Computer Graphics Techniques 6(1), 2017. The frame each occlusion hemisphere is sampled in.
Mark Jarzynski and Marc Olano, Hash Functions for GPU Rendering
Journal of Computer Graphics Techniques 9(3), 2020. The PCG hash that decorrelates each texel's occlusion samples.
I. M. Sobol', On the distribution of points in a cube and the approximate evaluation of integrals
USSR Computational Mathematics and Mathematical Physics 7(4), 1967. The two-dimensional low-discrepancy sequence the occlusion rays follow.
Christer Ericson, Real-Time Collision Detection
Morgan Kaufmann, 2005, §5.1.5. The closest point on a triangle, which conservative coverage bakes island edges from.
Zina H. Cigolle, Sam Donow, Daniel Evangelakos, Michael Mara, Morgan McGuire and Quirin Meyer, A Survey of Efficient Representations for Independent Unit Vectors
Journal of Computer Graphics Techniques 3(2), 2014. The octahedral encoding of the normals and tangents a venus .mesh stores, which the Mesh Importer writes and decodes for its preview.
Santiago Orgaz, xNormal
The Texture Baker's option set follows the xNormal manual's: front and rear ray distances, cages, the occlusion spread, bias and attenuation. Its ideas only; no xNormal code is used.

Fonts

IBM Plex Sans SIL Open Font License 1.1
Copyright © 2017 IBM Corp., with Reserved Font Name "Plex". License.
Azeret Mono SIL Open Font License 1.1
Copyright 2021 The Azeret Project Authors. License.

Both fonts are served from this site as Latin subsets, so no font request goes to a third party.

Everything else

The BCn encoder and decoder, the normal-map and distance-field pipelines, the texture baker, the mesh importer's OBJ and glTF readers and its .mesh writer, the PNG and DDS writers and the page code are original work. The pages load no analytics, no third-party scripts and no third-party images.