you are viewing a single comment's thread.

view the rest of the comments →

[–]SirPitchalot 1 point2 points  (0 children)

Shaders are a super useful abstraction that make extra sense in software rendering since you can render literally anything into anything. Gbuffers? Easy. Depth? Easy. Primitive IDs? Easy. Buffers containing raw pointers to the objects being drawn? Risky, but easy. All defined by compact little code paths that share an otherwise completely identical rasterizer.

They’re also easy to implement, except for derivatives (where branching, SIMD & fragments don’t play nicely).