Are there libraries to handle low-level graphics, so that I can deal directly with pixels?
There are libraries for putting up a window that you can copy pixels into directly:
However, it is important to understand that high performance generally does not come from writing a program that addresses individual pixels. In most applications, if you want to “ perform graphics-related functions very efficiently”, that means you want to use the GPU, and while you certainly do write programs that operate on pixels (fragment shaders), you do so in a way that is much different from “give me access to the pixels”. GPUs are massively parallel and this demands a different style of programming.
If you want to pursue this direction instead, the obvious choice is wgpu
, which gives you a safe, clean Rust API to use the capabilities of your GPU. (There are alternatives that are arguably better in one way or another, but wgpu
is definitely the flagship choice.)
I was also wondering if low-level graphics programming is used to write custom graphics drivers for the graphics card
Well, writing drivers is low-level but that doesn't mean it's the same kind of “low-level” as managing pixels. GPUs mostly have proprietary architectures, so “custom drivers” is often more of a reverse-engineering task than a graphics task. In any case, there is rarely reason to write new drivers for performance; it's done either because you work for the GPU maker, or because the GPU maker hasn't written satisfactory drivers for your platform.
I also hope that you can suggest some sources for learning low-level graphics programming, its methods and algorithms
Computer graphics is a huge field, and there isn't one kind of “low-level”, so you have to pick where to start. A classic recommendation if you are new to graphics is Ray Tracing in One Weekend, which will teach you how to write a raytracer, a kind of program that can make images given a definition of the scene as geometric objects. (Your link claims that ZBrush is using ray tracing; I don't know if that's true or speculation/oversimplification.) CPU raytracers are not the path to high-efficiency graphics, but they are a great way to learn how to get from data structures to a semi-realistic picture. Once you have that experience, you will have more concepts with which to ask more specific questions.
I don't know of a specifically Rust recommendation, though. Learn Wgpu will get you started with wgpu
but that isn't really teaching you about methods, just about what the parts of a hello-world look like.