All Projects → Bauxitedev → Godot Texture Painter

Bauxitedev / Godot Texture Painter

Licence: mit
A GPU-accelerated texture painter written in Godot 3.0

Projects that are alternatives of or similar to Godot Texture Painter

Openvg
Tools for exploring OpenVG
Stars: ✭ 371 (+139.35%)
Mutual labels:  graphics, drawing, graphics-programming
Softwarerenderer
Software rendering engine with PBR. Built from scratch on C++.
Stars: ✭ 323 (+108.39%)
Mutual labels:  graphics, graphics-programming, physically-based-rendering
Vxr
General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)
Stars: ✭ 181 (+16.77%)
Mutual labels:  graphics, graphics-programming, physically-based-rendering
Hybridrenderingengine
Clustered Forward/Deferred renderer with Physically Based Shading, Image Based Lighting and a whole lot of OpenGL.
Stars: ✭ 563 (+263.23%)
Mutual labels:  graphics, graphics-programming, physically-based-rendering
Mopaint
🎨💪 Modern, modular paint and more! (pre-alpha, not much done yet)
Stars: ✭ 50 (-67.74%)
Mutual labels:  drawing, art
Atrament.js
A small JS library for beautiful drawing and handwriting on the HTML Canvas.
Stars: ✭ 1,045 (+574.19%)
Mutual labels:  graphics, drawing
Flycube
Graphics API wrapper is written in C++ on top of Directx 12 and Vulkan. Provides main features including ray tracing.
Stars: ✭ 78 (-49.68%)
Mutual labels:  graphics, graphics-programming
Visual Center
Proposed tool to better align logos in the center of a container.
Stars: ✭ 1,338 (+763.23%)
Mutual labels:  art, tool
Awesome Creative Coding
Creative Coding: Generative Art, Data visualization, Interaction Design, Resources.
Stars: ✭ 8,696 (+5510.32%)
Mutual labels:  graphics-programming, art
Graphicsrenderer
A drop-in UIGraphicsRenderer port -- CrossPlatform, Swift 4, Image & PDF
Stars: ✭ 85 (-45.16%)
Mutual labels:  graphics, drawing
Renderer
A shader-based software renderer written from scratch in C89
Stars: ✭ 1,366 (+781.29%)
Mutual labels:  graphics, graphics-programming
Galeri Www
A perpetual artwork streaming app. (Website Repo)
Stars: ✭ 46 (-70.32%)
Mutual labels:  drawing, art
Sketch
A Common Lisp framework for the creation of electronic art, visual design, game prototyping, game making, computer graphics, exploration of human-computer interaction, and more.
Stars: ✭ 1,026 (+561.94%)
Mutual labels:  graphics, art
3d Game Shaders For Beginners
🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
Stars: ✭ 11,698 (+7447.1%)
Mutual labels:  graphics, graphics-programming
Perfect Freehand
Draw perfect pressure-sensitive freehand strokes.
Stars: ✭ 999 (+544.52%)
Mutual labels:  graphics, drawing
Gfx
Convenience package for dealing with graphics in my pixel drawing experiments.
Stars: ✭ 82 (-47.1%)
Mutual labels:  graphics, drawing
Ragg
Graphic Devices Based on AGG
Stars: ✭ 127 (-18.06%)
Mutual labels:  graphics, drawing
Vulkan Samples
One stop solution for all Vulkan samples
Stars: ✭ 2,009 (+1196.13%)
Mutual labels:  graphics, graphics-programming
Pixelorama
A free & open-source 2D sprite editor, made with the Godot Engine! Available on Windows, Linux, macOS and the Web!
Stars: ✭ 2,535 (+1535.48%)
Mutual labels:  graphics, art
Primitive
Reproducing images with geometric primitives.
Stars: ✭ 11,657 (+7420.65%)
Mutual labels:  graphics, art

Godot Texture Painter

This is a prototype for a PBR texture painter in Godot 3.0. It's meant to be mostly a proof-of-concept, to show that it's possible at all - but I might turn it into a full blown application one day (but no promises!).

Paint

The painting algorithm is GPU-accelerated, so you can paint on extremely large textures with huge brushes on very high poly models without lag.

You can paint albedo, roughness, metalness and emission. Also, you can right click to place decals, and use the slider on the top right to change the brush softness. Other controls are displayed on the GUI.

Here's a video of it in action.

Note: requires Godot 3.1.1 Mono edition. Older versions probably won't work.

How it works

The program works using two kinds of textures: mesh and paint textures. They are organized in the scene tree like this:

Tree

Mesh textures store information about triangle position and normal on a per-pixel basis, which is used as input for the paint shader to do GPU accelerated painting. This already reveals a fundamental limitation of the algorithm, though: since a texture can store only one value per pixel, a texel can only be at 1 point in space at the same time. As such, the algorithm only works for models that have non-overlapping UVs (so every texel appears exactly once on the model).

Paint textures store the actual texture you see on the model, and it is generated by mixing the output from the paint shader with the previous frame. There are 4 of them: albedo, roughness, metalness and emission. I might make a 5th one, for painting normals, although that will be a little more difficult to implement.

Limitations/Known Issues

  • You can only paint on models that have non-overlapping UVs.
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].