Uzun bir süredir ara verdiğim C64 için 3d rendering projeme geri dönüş yapayım dedim. Şu an için çok ilkel ancak yine de paylaşayım ve biraz da deneyimlilerden yardım alayım dedim.
Pastel3d ışınları doğrudan geometrik objeler üzerinden izdüşürerek çalışıyor. Mesh kullanmıyor. 24-bit HSL renk uzayında çalışıyor. Tabi ki daha sonra dithering kullanarak c64 renk modlarına çeviriyor. Lores MCM ve Hires modun yanısıra Laced modlara da izin veriyor. Hesaplamaları 32-bit floating point üzerinden yapıyor. Şu an için 2 tip objeye izin veriyor. Sonsuz düzlem (tek renk veya satranç tahtası) ve küre. 1 adet de beyaz ışık kaynağı.
Kodlar github'da mevcut:
https://github.com/fstasel/Pastel3dDerlemek için KickAssembler'a ihtiyaç var. "settings.inc" dosyasından manzara ayarlamalarını yapıyorsunuz. Dilerseniz hızlı sonuç almak için text modunu kullanabilirsiniz. Grafik modunda hesaplanmış görüntüleri "display.prg" ile açabilirsiniz. Örnek test dosyaları da var. Hesaplama işleri için turbo modu olan C64 emulatoru önerilir (takdir edersiniz ÇOK yavaş).
Kodda rendering ile color conversion modulü iç içe ve çok karışık. Bu iki modulu ayırmayı planlıyorum. FLI ve IFLI modlarını eklemek istiyorum. Ancak bu modlarla deneyim sahibi birilerine ihtiyaç duyabilirim. Hesapları için fixed-point aritmetiğe çevirebilirsem epey hızlanma sağlarım ancak bu hızlanma yine de çok manalı olur mu ayrı mesele. Yavaş olsa ne kaybederiz ki

Bir de 1st order yansımaları da yapabilirsem gayet güzel olur.
Örnek bir laced resim ekliyorum. Animated gif yaptım ancak sanırım en iyi sonuç emulatorde görülüyor.