Drawing single pixels (pixelart) in Image Paint Mode is impossible #71403
Labels
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
25 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#71403
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
System Information
Operating system: Windows-10-10.0.17763 64 Bits
Graphics card: GeForce GTX 1070/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 430.86
Blender Version
Broken: version: 2.81 (sub 16), branch: master, commit date: 2019-11-06 20:48, hash:
85637311c2
Worked: (optional)
Short description of error
Drawing pixel art in Blender (i.e. unsmoothed single pixels) has become impossible ever since the sub-pixel precision update for the image paint brush.
The ["Option to turn off anti-aliasing" ]] commit and [ https:*developer.blender.org/rBa58c1d4497db73b2480bcc31dec0aa1ca98a3880 | "Fix 2D paint antialiasing offset" commit did not fix this.
@PabloDobarro
You're going to want to have a look at this.
Exact steps for others to reproduce the error
Create a texture of any size. Turn off anti-aliasing in the Brush settings and paint with a brush radius of 1. Neither is it possible to draw single pixels, nor can you draw lines with a width of 1 pixel.
Using the "Constant" falloff preset, the result is this:
Any of the other non-constant falloffs will produce anti-aliased pixels despite anti-aliasing being turned off:
This is the expected result you should be getting, regardless of the falloff curve:
Note
Also, apart from this bug, I believe the Falloff options should vanish from the menus completely when brush anti-aliasing is turned off, since they no longer have a purpose. The falloff must always be that of the "Constant" preset.
Added subscribers: @PabloDobarro, @gobb_blend
#81693 was marked as duplicate of this issue
Added subscriber: @lichtwerk
Can confirm this has changed and single pixel drawing is not possible atm.
Added subscriber: @Mets
I think that the AA and mask generation code is correct. The brush is filling with 100% strength all pixels which center (1 AA sample per pixel) is inside the brush radius.
2019-11-07 17-20-05.mp4
The problem is that with a 1px radius, you get 2px diameter, so you are always going to paint 2px at the same time. This was not noticeable in the previous mask generation implementation because it was clamped by a 1x1 mask size. To solve this properly, we just need to support values smaller than 1px in the UI, the rest of the texture paint code (at least 2D paint) already supports it (if you enable pressure sensitivity in the radius it will paint with radius smaller than 1px and it works).
If we do a huge hack like P1154, it will work as expected, but this needs to be fixed at a UI level.
2019-11-07 17-29-08.mp4
I just checked the code and the brush size is an int, so it will require some refactoring.
I guess being able to set the Radius to a minimum value of 0.5 would be an okay solution for now.
Too bad this won't be finished in time for 2.81. Some artists won't have a stable version to work with for a couple of months then if you go the serious refactoring route (which I agree you eventually should).
One more thing:
What's weird about this is that every drawing software with the exception of Blender defines brush size by diameter (usually called "Size" for simplicity). Artists are always going to expect to be able to draw single pixels after inputting a "1" into the corresponding UI field.
I don't assume that this is ever going to change, and Blender is ever going to define brush size by diameter instead of radius...
Changed status from 'Confirmed' to: 'Archived'
The current implementation is correct. A 1px radius is 2px diameter, so it paints two pixels at the same time.
I know that this makes impossible to paint pixel art. That is properly fixed in D6209, but I still need to check that patch again to see if it breaks things in some other paint modes, as it is quite a big change that may affect some areas that I'm not aware of.
Added subscriber: @alfredbaudisch
Added subscriber: @PeterHIndes
yes the 1px radius is a pain. maybe defining it in terms of diameter would fix this without needing a float. The values could be converted behind the scenes or just shown as diameter. We could also just get a pencil tool like some other programs have. Or maybe just a default brush setup as a pencil.
Added subscriber: @officeqube
Added subscriber: @TheZakMan
Did this get solved?
Will we be able to paint 1px again?
And why not use size like all other artistc programs out there insted of diameter?
Size is diameter. No confusion intended.
I was hoping that 2.83 would fix the 1px problem for us that love to paint pixel textures :(
Changed status from 'Archived' to: 'Needs Triage'
Added subscriber: @dfelinto
I guess if this wasn't resolved like it was expected, at the very least it should be re-opened so a developer can comment again. Messaging was also a bit confusing to me, with "it's working as expected" and "it will be fixed" in the same comment. To me this also seems like a regression, so shouldn't it be a high priority issue?
CC @PabloDobarro @dfelinto
Added subscriber: @mano-wii
Changed status from 'Needs Triage' to: 'Confirmed'
From what I can see in the comments, this was closed because it works as intended.
Apparently the smallest possible brush diameter is currently 2px (1px radius).
D6209 seems to be a proposal to resolve this limitation.
Added subscribers: @JanKaderabek, @TheRedWaxPolice
Any news on this?
But why 2.79 is drawing 1 pixel with 1px radius brush then?
Our team is currently working on a complex game exporter / importer integrated into Blender and we need to let user to paint single pixels on 16x16px image to create a physics maps, so this is an absolutely critical feature for us.
We didn't expect such simple task to be problem for Blender, is there any chance the fix D6209 can make it to the official build?
Thank you!
I'm also dying to see this get fixed. I am thinking about this literally every single day at work.
Had to put two game projects completely on hold because of this issue caused by Pablo Dobarro's subpixel drawing feature.
Regarding the fix, instead of the brush radius becoming a float all over Blender, just so we can have a 0.5 pixel brush, I would very much prefer if we'd measure the brush in diameter like every other graphics software out there.
No artist wants to do math when choosing a brush size. 1 in the UI means "one pixel". Not two. Not a 2x2 square.
Added subscriber: @Teds
Hey developers. I know there's no point in telling you this, because you're busy enough as it is, and there's already a schedule for everything -- but several months have now passed, and I feel compelled to remind you that this is not a minor issue, and there are people out there literally counting the days until you resolve it.
Fingers crossed for Blender 3.0. Blender should be the go-to software for all things low poly / PSX style. Please allow pixel artists to finally make the switch from 18-months-old Blender 2.80 to the latest release. That would be great. Best of luck.
Added subscriber: @Ortho_Cam
For anyone waiting, couldn't you get by painting at 2x2 pixels and scaling down by half when done? https://youtu.be/RQVAUaSUP-k?t=1075 might help too.
@Ortho_Cam
No, drawing at a radius of 1 with constant falloff and no anti-aliasing will leave you with dots that look like this:
There's no way to predict what this will look like when scaled down. And why even go through all this hassle when the best option is still to simply use Blender 2.80?
On top of that, drawing is insanely laggy in Blender 2.91 for some reason. It must be some kind of regression. I didn't look into it.
So, it's currently either back to 2.80 (like the person in your video), or no pixel-perfect painting at all.
Until "radius" is finally changed to the much more usable "size" AKA diameter (in pixels), as it is in virtually any other professional application. (Photoshop, Krita, ClipStudioPaint, SubstancePainter, zBrush, Mudbox, the list goes on.)
Added subscriber: @zNight
Added subscriber: @benhhopkins
Added subscriber: @DoekedeWolf
Added subscriber: @Bad.Unit
Hello, i want to subscribe to this issue because yeah it should definitely need to fix... with 1px radius, no AA, constant falloff brush paint chunks of 2/3/4 pixels, and for pixel art this is not good. Workaround at the moment exists, like addons, downscaling, or use external editors like Krita or Aseprite, but this should be a normal in blender too working on a single pixel, i think this issue don't need to have a low severity even if is not a breaking bug, but should gave more attention to fix in the upcoming releases, thanks dev for all the efforts!
Added subscriber: @peter_hutsul
You can find solution here
https://blender.stackexchange.com/questions/198544/how-to-texture-paint-individual-pixels
No, that information is false. It has been addressed already.
With that kind of brush setup, Blender will often not draw a pixel, or draw two/three at once, or draw the pixels slightly less opaque than they should be. There is no sweet spot that acts like an actual pixel perfect brush.
Pablo Dobarro has already acknowledged that turning "radius" into "diameter" for all brushes is the way to go. https://developer.blender.org/D6209#252648
It will likely be worked on in a few months, whenever he's done with sculpt mode.
Until then, it's back to Blender 2.8.
Added subscriber: @recatek
Added subscriber: @Radivarig
Added subscriber: @ziflin
Would love to be able to do 3D pixel art models directly in more recent versions of Blender, especially with all of the exciting upcoming texture painting improvements (layers, etc.). Currently it's nearly impossible without external tools.
Added subscriber: @AndyCuccaro
Added subscriber: @jfmatheu
I want to show interest in resolving this issue, I'd love to be able to paint pixel art within the recent Blender releases rather than having to go back to 2.79
Yeah this would be much appreciated. Here are two related threads with imo very good suggestions to solve this issue thoroughly:
Radius vs. Diameter: #98676
A separate Pixel Brush / Pencil tool: #98607