Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> it should be considered a specific aesthetic IMHO

Case in point, in a 3D platform/adventure game i made back in 2020 for an MSDOS game jam[0], the rasterizer has intentional "flaws" - like lack of subpixel and subtexel accuracy, no zbuffering and no perspective correction (and perhaps unintuitively, the last two actually made the whole renderer more complex) because i had in my mind a specific "glitchy" look. Adding those would be trivial (and probably speed up the rendering a bit on 90s hardware), but things like the wavy lines (as seen in the first shot) and "trembling" vertices are intentional.

Similarly when i ported the game to use 3D hardware APIs, i went for full bilinear filtering because i wanted that 90s "just ported our SW 3D game to use 3dfx" style that a lot of 90s 3D games had (and FWIW the game also runs on an actual Voodoo 1 too[1] :-P). Though i do know some people dislike it so i added an option to disable it.

[0] https://bad-sector.itch.io/post-apocalyptic-petra

[1] https://i.imgur.com/JssBdox.jpg



I forgot about taht game, I loved it.

source for the rest:

https://codeberg.org/badsector/PetraEngine


I can imagine no z buffer requiring finding a way to efficiently sort the triangles but how can affine mapping be harder than perspective correct?


(i assume with "harder" you meant "slower")

Right now i tessellate the world quads dynamically based on the distance from the camera, which not only has an overhead of its own but it also adds additional geometric overhead (more transformations, more sorting), so perspective correct texture mapping would let me get rid of that tessellation.

Also 3D meshes (which are static, no dynamic tessellation) need to have enough tessellation to avoid getting too distorted when the camera is close even if the extra geometry isn't really necessary (e.g. IIRC the top sides of the desks are 9 quads/18 triangles when with perspective correct mapping they'd be just 1 quad/2 triangles).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: