Screenshot from 2023-05-02 00-18-06.png
354.9 KB
(fast enough for a 1M-tile grid of random crap)
Please open Telegram to view this post
VIEW IN TELEGRAM
Awww yisss! Everything* I wanted feature-wise from this tileset:
- Map declared in Multicolor SDF (lava is the base layer, everything else is boolean'd together)
- 4-corner Wang tiles extracted from TileSetter project (no, I didn't do those 96 tiles by hand) (package pending)
- Per-tile attributes in the "free" vec4 slot. Here - tile speed (also used for passability).
- A* path-finding with per-tile travel costs (the truck on the screenshot prefers flat terrain as ridges are slow to crawl).
* I have unused alternative biome tiles... to spice up the landscape 😏
- Map declared in Multicolor SDF (lava is the base layer, everything else is boolean'd together)
- 4-corner Wang tiles extracted from TileSetter project (no, I didn't do those 96 tiles by hand) (package pending)
- Per-tile attributes in the "free" vec4 slot. Here - tile speed (also used for passability).
- A* path-finding with per-tile travel costs (the truck on the screenshot prefers flat terrain as ridges are slow to crawl).
* I have unused alternative biome tiles... to spice up the landscape 😏
Screenshot_from_2023-05-08_15-04-49.png
215.7 KB
Visibility is surprisingly tricky. Lots of implementation options, semantic options and how to combine those.
Extracted tile "proxy" data from Tilesetter projects. Makes maps a little less bland even in extreme conditions.
This media is not supported in your browser
VIEW IN TELEGRAM
Subtleties of animation…
Had to slice the effect sprite into fg/bg parts and put them on different layers. And synchronize everything manually 😓
Had to slice the effect sprite into fg/bg parts and put them on different layers. And synchronize everything manually 😓
Linear Space Program
Been fever-dreamin' some DIY material layering and light sources (before I get to the chapter 7 of the second book). The amount of noise from emissive materials is.. ugh. Apparently this is why we bother with "light sources" instead of just dropping some…
Night is the time for experiments [with monadic material composition]
BVH is love, BVH is life 📦
Ramped up samples, bounces, and resolution and the rendering time is still less than the first attemts with the linear traversal of all objects in the world.
Converting interaction event into a single-constructor with additive, multiplicative, and scatter components helped a little too.
Also, skipped ray bouncing when attenuation drops below 10-bit range.
The limit practically remains to prevent infinite bounces between perfect mirrors.
Ramped up samples, bounces, and resolution and the rendering time is still less than the first attemts with the linear traversal of all objects in the world.
Converting interaction event into a single-constructor with additive, multiplicative, and scatter components helped a little too.
Also, skipped ray bouncing when attenuation drops below 10-bit range.
The limit practically remains to prevent infinite bounces between perfect mirrors.
The cat is out of the box[Goral84]!
[Goral84]: Cindy M. Goral, Kenneth E. Torrance, Donald P. Greenberg, and Bennett Battaile. 1984. Modeling the interaction of light between diffuse surfaces. SIGGRAPH Comput. Graph. 18, 3 (July 1984), 213–222. https://doi.org/10.1145/964965.808601
[Goral84]: Cindy M. Goral, Kenneth E. Torrance, Donald P. Greenberg, and Bennett Battaile. 1984. Modeling the interaction of light between diffuse surfaces. SIGGRAPH Comput. Graph. 18, 3 (July 1984), 213–222. https://doi.org/10.1145/964965.808601
Spent 2 days trying to figure out a bug. Accidentally fixed something while tidying up the code, don't know what was the problem. I thought I've fixed the real bugs (a few times) and everything should be working, but nooooo....
For some reason C++ code decided to shadow the shit out of its variables and use distance domain where everything but one quantity was in the time domain already. I hate C++ for tutorial code dumps 🚮
For some reason C++ code decided to shadow the shit out of its variables and use distance domain where everything but one quantity was in the time domain already. I hate C++ for tutorial code dumps 🚮