|
25989
|
My awesome macropad! by @hem | Stardance
|
hem
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @hem | Stardance
|
1792774483.9350643
|
1793379283.9350643
|
|
25937
|
Frictionless by @Diamondgobo | Stardance
|
Diamondgobo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @Diamondgobo | Stardance
|
1792774484.7896886
|
1793379284.7896886
|
|
16933
|
My very own WebOS by @Mily | Stardance
|
Mily
|
0
|
1.55
|
0
|
[]
|
[{"post_id": 12795, "ts": "202 [{"post_id": 12795, "ts": "2026-06-20T22:32:41Z", "hours": 1.5525, "text": "Look at the progress! From not even knowing how to properly attach a picture to a href link! :D"}, {"post_id": 12028, "ts": "2026-06-19T16:50:56Z", "hours": 0.0, "text": "I have no idea why the image isn’t working :("}]...
|
Title: My very own WebOS by @Mily | Stardance
Dev Title: My very own WebOS by @Mily | Stardance
Devlogs:
I have no idea why the image isn’t working :(
Look at the progress! From not even knowing how to properly attach a picture to a href link! :D...
|
1792774488.1167629
|
1793379288.1167629
|
|
10383
|
Untitled by @DevIsTechy | Stardance
|
DevIsTechy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @DevIsTechy | Stardance
|
1792774489.003014
|
1793379289.003014
|
|
37695
|
My very own WebOS by @Drmstuart | Stardance
|
Drmstuart
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Drmstuart | Stardance
|
1792774489.865879
|
1793379289.865879
|
|
15408
|
SmartChessBoard by @Ranveer | Stardance
|
Ranveer
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: SmartChessBoard by @Ranveer | Stardance
|
1792774490.7222729
|
1793379290.7222729
|
|
14964
|
Project Chronos by @redahussain | Stardance
|
redahussain
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Project Chronos by @redahussain | Stardance
|
1792774491.642526
|
1793379291.642526
|
|
11129
|
My first slack bot! by @keshie | Stardance
|
keshie
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @keshie | Stardance
|
1792774492.4760497
|
1793379292.4760497
|
|
26698
|
My very own WebOS by @TheRealLionKing | Stardance
|
TheRealLionKing
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @TheRealLionKing | Sta Title: My very own WebOS by @TheRealLionKing | Stardance...
|
1792774493.5461369
|
1793379293.5461369
|
|
33091
|
Custom Keyboard with an display by @Mark | Stardan Custom Keyboard with an display by @Mark | Stardance...
|
Mark
|
0
|
4.36
|
0
|
[]
|
[{"post_id": 27979, "ts": "202 [{"post_id": 27979, "ts": "2026-07-13T22:51:19Z", "hours": 4.3608, "text": "Devlog 1 Issues with Tracking I used the lookout-app to record how I worked, but it didn’t really connect with my account. On stardance-help I didn’t really get an answer (I will try again later) :( Project Start Today I started with my project. I want to focus on the keyboard first and add the other features after the bare minimum is working. At first, I tried sketching the layout in Fusion. Keyboard Concept It should be an 80% keyboard but with a small display (touch-display) in it, so you can control the audio for example. I also want to insert a Tamagotchi-like OS , so the more you use the keyboard, the happier and stronger your keyboard pet gets. The art part could get difficult, but I tried using AI for it and the images were alright. But that’s for another time. Layout Problems After I sketched the rough layout, I needed to know how many keys an Austrian keyboard needed (ä, ü, ö, etc.). That was a bit difficult because the keyboard layout managers I found were only in English format. I found out that it’s mostly the same by counting the keys on my own keyboard. I had some difficulties later because some parts of my laptop keyboard were better than my normal keyboard, so I got things mixed up and messed up the layout a bit—but it was quickly fixed afterwards. Next Steps My next steps would be to wire everything up and hope for the best. PCB Ideas I’m still thinking about whether I should use a separate PCB for the display. That would complicate things, but on the other hand, the PCB would get really complicated and the chances for failure would be larger. Mounting Problem I almost forgot—I need to place the mounting holes somewhere, but I have no idea where to place them, so that could turn out interesting. We will see. Extra information for the Sketch (I later decided to only add the display and maybe the text (still in progress) and leave the rest on the top out to have more room—so ignore the turn thingy, I forgot what it’s called.)"}]...
|
Title: Custom Keyboard with an display by @Mark | Title: Custom Keyboard with an display by @Mark | Stardance
Devlogs:
Devlog 1 Issues with Tracking I used the lookout-app to record how I worked, but it didn’t really connect with my account. On stardance-help I didn’t really get an answer (I will try again later) :( Project Start Today I started with my project. I want to focus on the keyboard first and add the other features after the bare minimum is working. At first, I tried sketching the layout in Fusion. Keyboard Concept It should be an 80% keyboard but with a small display (touch-display) in it, so you can control the audio for example. I also want to insert a Tamagotchi-like OS , so the more you use the keyboard, the happier and stronger your keyboard pet gets. The art part could get difficult, but I tried using AI for it and the images were alright. But that’s for another time. Layout Problems After I sketched the rough layout, I needed to know how many keys an Austrian keyboard needed (ä, ü, ö, etc.). That was a bit difficult because the keyboard layout managers I found were only in English format. I found out that it’s mostly the same by counting the keys on my own keyboard. I had some difficulties later because some parts of my laptop keyboard were better than my normal keyboard, so I got things mixed up and messed up the layout a bit—but it was quickly fixed afterwards. Next Steps My next steps would be to wire everything up and hope for the best. PCB Ideas I’m still thinking about whether I should use a separate PCB for the display. That would complicate things, but on the other hand, the PCB would get really complicated and the chances for failure would be larger. Mounting Problem I almost forgot—I need to place the mounting holes somewhere, but I have no idea where to place them, so that could turn out interesting. We will see. Extra information for the Sketch (I later decided to only add the display and maybe the text (still in progress) and leave the rest on the top out to have more room—so ignore the turn thingy, I forgot what it’s called.)...
|
1792774494.4083843
|
1793379294.4083843
|
|
26186
|
My awesome macropad! by @janmorawiec | Stardance
|
janmorawiec
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @janmorawiec | Star Title: My awesome macropad! by @janmorawiec | Stardance...
|
1792774495.4005587
|
1793379295.4005587
|
|
26745
|
My awesome macropad! by @dhanvannth | Stardance
|
dhanvannth
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @dhanvannth | Stard Title: My awesome macropad! by @dhanvannth | Stardance...
|
1792774497.339565
|
1793379297.339565
|
|
25454
|
Foxcry by @Ayamamoru | Stardance
|
Ayamamoru
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Foxcry by @Ayamamoru | Stardance
|
1792774498.204227
|
1793379298.204227
|
|
5966
|
text based thing by @HighLatency | Stardance
|
HighLatency
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: text based thing by @HighLatency | Stardanc Title: text based thing by @HighLatency | Stardance...
|
1792774499.0662403
|
1793379299.0662403
|
|
319
|
My first slack bot! by @Aiman | Stardance
|
Aiman
|
0
|
2.62
|
0
|
[]
|
[{"post_id": 13572, "ts": "202 [{"post_id": 13572, "ts": "2026-06-22T07:00:09Z", "hours": 2.6153, "text": "OMGGGG my first devlog YAYAYAYAY. so basically its just a simple slackbot but i could NOT figure it out it was honestly the hardest ever so pleaseee be easy on me. Oh and i would lovee some advice on how i can improve myself :)"}]...
|
Title: My first slack bot! by @Aiman | Stardance
Title: My first slack bot! by @Aiman | Stardance
Devlogs:
OMGGGG my first devlog YAYAYAYAY. so basically its just a simple slackbot but i could NOT figure it out it was honestly the hardest ever so pleaseee be easy on me. Oh and i would lovee some advice on how i can improve myself :)...
|
1792774499.9103646
|
1793379299.9103646
|
|
38409
|
Frictionless by @dariaantoniuk | Stardance
|
dariaantoniuk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @dariaantoniuk | Stardance
|
1792774500.7594235
|
1793379300.7594235
|
|
5143
|
My first slack bot! by @falak | Stardance
|
falak
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @falak | Stardance
|
1792774501.6136491
|
1793379301.6136491
|
|
21421
|
My first slack bot! by @SagittaJL | Stardance
|
SagittaJL
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @SagittaJL | Stardan Title: My first slack bot! by @SagittaJL | Stardance...
|
1792774502.4839935
|
1793379302.4839935
|
|
33870
|
Untitled project by @khristian | Stardance
|
khristian
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @khristian | Stardance
|
1792774503.3364043
|
1793379303.3364043
|
|
29893
|
Info.Mauvi by @Mauvi020 | Stardance
|
Mauvi020
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Info.Mauvi by @Mauvi020 | Stardance
|
1792774504.1836984
|
1793379304.1836984
|
|
29347
|
Project MicroShield by @hoorainpk14 | Stardance
|
hoorainpk14
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Project MicroShield by @hoorainpk14 | Stard Title: Project MicroShield by @hoorainpk14 | Stardance...
|
1792774505.0417323
|
1793379305.0417323
|
|
29648
|
Frictionless by @Khuleq | Stardance
|
Khuleq
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @Khuleq | Stardance
|
1792774505.9313421
|
1793379305.9313421
|
|
22382
|
The Art Archive by @danielSan | Stardance
|
danielSan
|
0
|
81.26
|
0
|
[]
|
[{"post_id": 78940, "ts": "202 [{"post_id": 78940, "ts": "2026-10-12T03:30:49Z", "hours": 10.2206, "text": "Hello fellow coders! Welcome to another devlog! It is now my time to share all the updates I have done to the app’s UI during this past week. Firstly, I started the development of the homeView, which looks really good so far! I have tried to keep the design familiar to what the infoView is like, so that it creates a sense of uniformity and familiarity to the user. Furthermore, I have also changed the tabView, so that, if you want to change between tabs, you can now simply slide between views, with no visible tab, so that you can use as much of the screen as possible. There are some things at which I am working on at the moment, but that I would like to finally share once they are refined and tested. Thanks for everything and see you really soon dear coders!"}, {"post_id": 76058, "ts": "2026-10-02T06:51:02Z", "hours": 10.0589, "text": "Hello dear coders! Welcome to another devlog! Just like I promised on last devlog, I have been profoundly working on the design itself of the app, since the database is now done, and I would like to show you some incredible changes we have done to make the experience as satisfying yet easy as possible. Firstly, you can now notice that we are using two main colors, instead of 1, extracted from the main artwork as both background and font colors, which make the view feel more “alive”. Also, I have now added both the name of the artwork and author on the “archive view”, which I hope you guys find more useful to identify artwork. Moreover, the most exciting feature for me to develop at the moment has been a proper landscape view, at which I have eliminated unnecessary elements (like title of the view or that long search bar) and substituted them for some more friendly alternatives, so that users can enjoy on this format without any big distractions. Furthermore, now the information view of each artwork includes a link to the web page of the museum where the data has been collected. That’s it for now! Thank you so much for everything, and see you really soon for more updates on the development of this app."}, {"post_id": 74223, "ts": "2026-09-26T23:33:32Z", "hours": 9.7308, "text": "Hello fellow coders to another devlog of my app! First of all, I am really excited for the announcement of the extension on stardande! It will allow me to be able to finish the app correctly without the need of rushing. Also, I would expect more devlogs as the date gets closer, as I am gonna try to focus harder on this project on the next few weeks. And even though there is not much to share (yet), I wanted to share some big news: The database is finally done!!! (yay). There will be a total of 400 selected artworks from all sorts of cultures available with their respective photo (at least on this basic version). And if you are wondering the reason why I am making my on database instead of just using an API, it’s for both ensuring a better look and simplicity + being able to access the app without the need of an internet connection. Even though I can not share any other news (yet), I would suggest staying tuned, as there are still many things to be unveiled about the app. See you soon!"}, {"post_id": 68466, "ts": "2026-09-15T04:52:10Z", "hours": 9.9583, "text": "Hello everyone! Welcome to another devlog about my app called “The Art Archive”. Firstly, I know I said the design of the menu of the Archive was already finished, but I felt like the old design wasn’t good enough, and I updated it to adapt to the size of the picture of the artwork. Sadly, that is all I can show at the moment, since I am currently working on polishing both the information view and the database, plus starting to design the home view. I will give you some updates really soon! See you all really soon!"}, {"post_id": 55650, "ts": "2026-08-27T16:39:51Z", "hours": 9.8736, "text": "Welcome to another devlog about my app called “The Art Archive”! Today I wanted to give some updates on what I have been working on for the past few weeks. Firstly, I have started developing a new screen at which you will be able to find all the information available about that artwork. And, even through there is still a long way to go on the development of the view, I would say that at the moment it is looking promising. Also, I have changed the artworks background colors and made them dynamic, so that they match the main color of it. Furthermore, I have also made some changes to the database, and I am expecting to finish it really soon, so that I can finally spend all my time developing and polishing the app’s design. And that is all the news I can share at the moment. I will see you all on the next devlog! Have a great day!"}, {"post_id": 39651, "ts": "2026-08-02T19:34:57Z", "hours": 10.3158, "text": "Hello! Welcome back to another devlog. Today I’m here to talk about some improvements that have been made onto the app UI, like a proper adaptation to the new header introduced in iOS 27, plus further improvements on the hierarchy of the cards typography. Moreover, there have been some minor changes made to the database of the art gallery with the addition of new artworks to it. In future updates, I am looking for making further improvements on the archive view before starting to develop the mainView and its system, plus adding some extra artworks onto the database. Hope you guys like how the app is looking so far! See you in the next devlog!"}, {"post_id": 27807, "ts": "2026-07-13T18:02:30Z", "hours": 9.9914, "text": "Hello Everyone! I wanted to give you some updates on my current project. Lately I have been updating the database and including some artworks from the Greek and British culture that I have found quite interesting. I have also started to plan the look of the UI, but I have not started developing it yet, since I would prefer to finish the database of the app before doing further changes to the UI. I will update the development of the app very soon with further changes at another devlog!"}, {"post_id": 22433, "ts": "2026-07-04T22:01:07Z", "hours": 11.1153, "text": "Hello everyone! Welcome to my first devlog ever about this new project I am currently developing during my free time, and which has been mainly driven by my love for art. Now, I would like to show you what I have been working on for the past week. Firstly, I have created a really basic interface (which will be updated later) and divided the app into two tabs: one tab called “home”, which has not been developed yet but it is planned to show 1 random artwork per day, and another one called “archive”, where all of the artworks are stored and can be accessed at any minute. Right now I am currently developing the database for the app, and obtaining all the necessary data from the MET museum. I am looking forward to sharing further progress in future devlogs!"}]...
|
Title: The Art Archive by @danielSan | Stardance
Title: The Art Archive by @danielSan | Stardance
Devlogs:
Hello everyone! Welcome to my first devlog ever about this new project I am currently developing during my free time, and which has been mainly driven by my love for art. Now, I would like to show you what I have been working on for the past week. Firstly, I have created a really basic interface (which will be updated later) and divided the app into two tabs: one tab called “home”, which has not been developed yet but it is planned to show 1 random artwork per day, and another one called “archive”, where all of the artworks are stored and can be accessed at any minute. Right now I am currently developing the database for the app, and obtaining all the necessary data from the MET museum. I am looking forward to sharing further progress in future devlogs!
Hello Everyone! I wanted to give you some updates on my current project. Lately I have been updating the database and including some artworks from the Greek and British culture that I have found quite interesting. I have also started to plan the look of the UI, but I have not started developing it yet, since I would prefer to finish the database of the app before doing further changes to the UI. I will update the development of the app very soon with further changes at another devlog!
Hello! Welcome back to another devlog. Today I’m here to talk about some improvements that have been made onto the app UI, like a proper adaptation to the new header introduced in iOS 27, plus further improvements on the hierarchy of the cards typography. Moreover, there have been some minor changes made to the database of the art gallery with the addition of new artworks to it. In future updates, I am looking for making further improvements on the archive view before starting to develop the mainView and its system, plus adding some extra artworks onto the database. Hope you guys like how the app is looking so far! See you in the next devlog!
Welcome to another devlog about my app called “The Art Archive”! Today I wanted to give some updates on what I have been working on for the past few weeks. Firstly, I have started developing a new screen at which you will be able to find all the information available about that artwork. And, even through there is still a long way to go on the development of the view, I would say that at the moment it is looking promising. Also, I have changed the artworks background colors and made them dynamic, so that they match the main color of it. Furthermore, I have also made some changes to the database, and I am expecting to finish it really soon, so that I can finally spend all my time developing and polishing the app’s design. And that is all the news I can share at the moment. I will see you all on the next devlog! Have a great day!
Hello everyone! Welcome to another devlog about my app called “The Art Archive”. Firstly, I know I said the design of the menu of the Archive was already finished, but I felt like the old design wasn’t good enough, and I updated it to adapt to the size of the picture of the artwork. Sadly, that is all I can show at the moment, since I am currently working on polishing both the information view and the database, plus starting to design the home view. I will give you some updates really soon! See you all really soon!
Hello fellow coders to another devlog of my app! First of all, I am really excited for the announcement of the extension on stardande! It will allow me to be able to finish the app correctly without the need of rushing. Also, I would expect more devlogs as the date gets closer, as I am gonna try to focus harder on this project on the next few weeks. And even though there is not much to share (yet), I wanted to share some big news: The database is finally done!!! (yay). There will be a total of 400 selected artworks from all sorts of cultures available with their respective photo (at least on this basic version). And if you are wondering the reason why I am making my on database instead of just using an API, it’s for both ensuring a better look and simplicity + being able to access the app without the need of an internet connection. Even though I can not share any other news (yet), I would suggest staying tuned, as there are still many things to be unveiled about the app. See you soon!
Hello dear coders! Welcome to another devlog! Just like I promised on last devlog, I have been profoundly working on the design itself of the app, since the database is now done, and I would like to show you some incredible changes we have done to make the experience as satisfying yet easy as possible. Firstly, you can now notice that we are using two main colors, instead of 1, extracted from the main artwork as both background and font colors, which make the view feel more “alive”. Also, I have now added both the name of the artwork and author on the “archive view”, which I hope you guys find more useful to identify artwork. Moreover, the most exciting feature for me to develop at the moment has been a proper landscape view, at which I have eliminated unnecessary elements (like title of the view or that long search bar) and substituted them for some more friendly alternatives, so that users can enjoy on this format without any big distractions. Furthermore, now the information view of each artwork includes a link to the web page of the museum where the data has been collected. That’s it for now! Thank you so much for everything, and see you really soon for more updates on the development of this app.
Hello fellow coders! Welcome to another devlog! It is now my time to share all the updates I have done to the app’s UI during this past week. Firstly, I started the development of the homeView, which looks really good so far! I have tried to keep the design familiar to what the infoView is like, so that it creates a sense of uniformity and familiarity to the user. Furthermore, I have also changed the tabView, so that, if you want to change between tabs, you can now simply slide between views, with no visible tab, so that you can use as much of the screen as possible. There are some things at which I am working on at the moment, but that I would like to finally share once they are refined and tested. Thanks for everything and see you really soon dear coders!...
|
1792774506.7667646
|
1793379306.7667646
|
|
3508
|
Untitled by @urieloff | Stardance
|
urieloff
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @urieloff | Stardance
|
1792774507.9150627
|
1793379307.9150627
|
|
13786
|
My awesome macropad! by @sharmaaarnav2012 | Starda My awesome macropad! by @sharmaaarnav2012 | Stardance...
|
sharmaaarnav2012
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sharmaaarnav2012 | Title: My awesome macropad! by @sharmaaarnav2012 | Stardance...
|
1792774508.7491736
|
1793379308.7491736
|
|
38006
|
Untitled project by @glowglowglor | Stardance
|
glowglowglor
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @glowglowglor | Stardan Title: Untitled project by @glowglowglor | Stardance...
|
1792774509.6232836
|
1793379309.6232836
|
|
7936
|
Analytically designed plane by @hmaganuru | Starda Analytically designed plane by @hmaganuru | Stardance...
|
hmaganuru
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Analytically designed plane by @hmaganuru | Title: Analytically designed plane by @hmaganuru | Stardance...
|
1792774510.4713044
|
1793379310.4713044
|
|
22697
|
Deskbot by @Furu | Stardance
|
Furu
|
0
|
5.02
|
0
|
[]
|
[{"post_id": 24167, "ts": "202 [{"post_id": 24167, "ts": "2026-07-07T15:48:30Z", "hours": 0.7458, "text": "Improving my github repository and schematics."}, {"post_id": 18807, "ts": "2026-06-30T00:46:24Z", "hours": 1.5239, "text": "Did a lot of changes and finally assembled."}, {"post_id": 18641, "ts": "2026-06-29T20:39:17Z", "hours": 0.4997, "text": "I will change the design this doesn’t feel right."}, {"post_id": 18359, "ts": "2026-06-29T14:17:22Z", "hours": 0.3339, "text": "Working on the idler wheel design"}, {"post_id": 18067, "ts": "2026-06-29T01:47:53Z", "hours": 0.4333, "text": "I am working on the wheel, modifying, improving"}, {"post_id": 17989, "ts": "2026-06-28T23:10:53Z", "hours": 0.3667, "text": "Working on the bottom part of the deskbot"}, {"post_id": 16886, "ts": "2026-06-27T12:31:22Z", "hours": 0.5, "text": "Finished head of my deskbot"}, {"post_id": 16871, "ts": "2026-06-27T11:57:17Z", "hours": 0.3667, "text": "Designing grille for speaker."}, {"post_id": 14318, "ts": "2026-06-23T12:28:04Z", "hours": 0.2528, "text": "I am working on the initial design and size of the parts and of my deskbot."}]...
|
Title: Deskbot by @Furu | Stardance
Devlogs:
I am Title: Deskbot by @Furu | Stardance
Devlogs:
I am working on the initial design and size of the parts and of my deskbot.
Designing grille for speaker.
Finished head of my deskbot
Working on the bottom part of the deskbot
I am working on the wheel, modifying, improving
Working on the idler wheel design
I will change the design this doesn’t feel right.
Did a lot of changes and finally assembled.
Improving my github repository and schematics....
|
1792774511.3953416
|
1793379311.3953416
|
|
3074
|
Untitled by @Grebb | Stardance
|
Grebb
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Grebb | Stardance
|
1792774512.516087
|
1793379312.516087
|
|
13682
|
VrikshaRakshak by @DesktopArt9806 | Stardance
|
DesktopArt9806
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: VrikshaRakshak by @DesktopArt9806 | Stardan Title: VrikshaRakshak by @DesktopArt9806 | Stardance...
|
1792774513.3685732
|
1793379313.3685732
|
|
24624
|
Untitled project by @ShxdowWxrlord | Stardance
|
ShxdowWxrlord
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @ShxdowWxrlord | Starda Title: Untitled project by @ShxdowWxrlord | Stardance...
|
1792774514.2047815
|
1793379314.2047815
|
|
10446
|
Untitled project by @Feteno | Stardance
|
Feteno
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Feteno | Stardance
|
1792774515.066809
|
1793379315.066809
|
|
36767
|
Personal Website/Portfolio by @Leaf | Stardance
|
Leaf
|
0
|
25.38
|
0
|
[]
|
[{"post_id": 63415, "ts": "202 [{"post_id": 63415, "ts": "2026-09-07T07:37:20Z", "hours": 3.4517, "text": "Devlog #4 ᯓ★ this isn’t gonna be the most informative post, instead I do wanna apologize for the lack of updates…!! i’ve gotten busy with school, seems like an excuse but applying for college is stressful and a lot!!! taking calculus & studying for every class ever blocks up my schedule. this three day weekend has given me the time to pick up on this project again and I couldn’t be happier. I’ve been making some progress in FRC so there is a lot to add to this page. I’ve started learning to program while I’ve been away so that’ll be showcased on here… hopefully. While this is a filler post, look at some of my progress :) i have to continue filling out the rest of this page, I spent a lot of time digging for more videos and thinking about how I want to organize the technical parts of this page. Thank you for reading. <3"}, {"post_id": 47316, "ts": "2026-08-15T06:00:38Z", "hours": 10.5433, "text": "Devlog #3 ᯓ★ OOPS I totally forgot to post, this is progress over the last 2 weeks!!! I’ve been really busy with school now that I’m a senior. Good news though - I think I finally got a feel for how I want the rest of my website to feel basically. Heres a full tour of what I have so far. What I’ve done: LOTS of visual updates Filled out (almost) all of my sections Added a cool interactive card view for my biggest projects! Infinite carousel for some of my recent artworks!! (Not filled out yet) This might not seem like a lot for 10 hours but trust me trying to make this fit my liking took SO long…. It’s also been a lot more than just the editing, lots of prep work going into picking out what pictures to display, thinking about my ToS, other achievements…. :D My next plans are to… Add my artwork into the gallery Robotics & Regatta Pages (hopefully) I also forgot to add this in my original post but I spent a lot of time trying to make my website mobile friendly as well."}, {"post_id": 35606, "ts": "2026-07-27T04:26:32Z", "hours": 5.7475, "text": "Devlog #2 ᯓ★ I might’ve forgotten to post my progress (whoops) but I’ve made significant progress on my website !! I’m still working on formatting my things so the github won’t be updated for a while. Changes: Responsive Navigation Bar New artwork Robotics page ( work in progress) -Decided on a color palette These changes might not seem like much… BUT a lot of my time has been spent preparing to add stuff onto my robotics page!! I’ve sorted through some of the photos that had been taken throughout the 2026 season, and I’ve also been looking at some photos I can include for the Solar Regatta section. Doing this also had me learning how to render some of the CAD work I’ve done, so I’ll be providing examples below ~ Next Steps ᯓ★ Reformat the showcase section Work on robotics page There are more things I plan on doing, but I’m really just going with the flow and learning new things!!! I’m happy with how far I’ve come with this website."}, {"post_id": 31789, "ts": "2026-07-20T13:44:24Z", "hours": 5.6361, "text": "My First Devlog ᯓ★ https://leafllm.github.io/leafLLM/ Hi hi!! I’m Leaf, and I decided for my first project to be a personal website. This is something I’ve been putting off for 3 years. Over the past 3 days, I’ve been taking it easy, and now I am slowly adding a few little features to this project! Some of the things I’ve added: FAQ Section ★ If I’m being honest, this was one of the annoying things to program because it involves JavaScript. It was supposed to be a simple tutorial that I followed and then I managed to overcomplicate it. I’m pleased with the results, though! You can see some older iterations in the pictures below Filled out ’About me ★ This section was pretty easy to write about, but originally, there wasn’t supposed to be anything about engineering! This was supposed to be a commission website, but I realize that this is impressive along with the other things I’ve managed to achieve >w< (You’ll get to see as I make progress!) Showcase section ★ There’s not much to say about this, as I already described it, but the progress on this is going well. I spent the night gathering the pictures I want to display, so stay tuned!!! Gallery There’s…. Nothing in there. Yet. But something is better than nothing. So What’s Next? ✦ Uhh.. Well, I don’t have a strict plan for this. I have a couple of vague ideas, such as Fill out the showcase section Add images Animate it (?) Fix the Right Column with the hyperlinks Add my socials Figuring out what artwork to display in my gallery … and a lot more. I may or may not focus on redoing the artwork that’s showcased on the right, she’s just a placeholder for now. Along with that, I want to design a favicon for my website too! With that comes figuring out the color palette for my website. But that’s a future issue. I’d like to showcase some draft ideas that I created long before I started this project. See you in my next post! ᶻ 𝗓 𐰁"}]...
|
Title: Personal Website/Portfolio by @Leaf | Stard Title: Personal Website/Portfolio by @Leaf | Stardance
Devlogs:
My First Devlog ᯓ★ https://leafllm.github.io/leafLLM/ Hi hi!! I’m Leaf, and I decided for my first project to be a personal website. This is something I’ve been putting off for 3 years. Over the past 3 days, I’ve been taking it easy, and now I am slowly adding a few little features to this project! Some of the things I’ve added: FAQ Section ★ If I’m being honest, this was one of the annoying things to program because it involves JavaScript. It was supposed to be a simple tutorial that I followed and then I managed to overcomplicate it. I’m pleased with the results, though! You can see some older iterations in the pictures below Filled out ’About me ★ This section was pretty easy to write about, but originally, there wasn’t supposed to be anything about engineering! This was supposed to be a commission website, but I realize that this is impressive along with the other things I’ve managed to achieve >w< (You’ll get to see as I make progress!) Showcase section ★ There’s not much to say about this, as I already described it, but the progress on this is going well. I spent the night gathering the pictures I want to display, so stay tuned!!! Gallery There’s…. Nothing in there. Yet. But something is better than nothing. So What’s Next? ✦ Uhh.. Well, I don’t have a strict plan for this. I have a couple of vague ideas, such as Fill out the showcase section Add images Animate it (?) Fix the Right Column with the hyperlinks Add my socials Figuring out what artwork to display in my gallery … and a lot more. I may or may not focus on redoing the artwork that’s showcased on the right, she’s just a placeholder for now. Along with that, I want to design a favicon for my website too! With that comes figuring out the color palette for my website. But that’s a future issue. I’d like to showcase some draft ideas that I created long before I started this project. See you in my next post! ᶻ 𝗓 𐰁
Devlog #2 ᯓ★ I might’ve forgotten to post my progress (whoops) but I’ve made significant progress on my website !! I’m still working on formatting my things so the github won’t be updated for a while. Changes: Responsive Navigation Bar New artwork Robotics page ( work in progress) -Decided on a color palette These changes might not seem like much… BUT a lot of my time has been spent preparing to add stuff onto my robotics page!! I’ve sorted through some of the photos that had been taken throughout the 2026 season, and I’ve also been looking at some photos I can include for the Solar Regatta section. Doing this also had me learning how to render some of the CAD work I’ve done, so I’ll be providing examples below ~ Next Steps ᯓ★ Reformat the showcase section Work on robotics page There are more things I plan on doing, but I’m really just going with the flow and learning new things!!! I’m happy with how far I’ve come with this website.
Devlog #3 ᯓ★ OOPS I totally forgot to post, this is progress over the last 2 weeks!!! I’ve been really busy with school now that I’m a senior. Good news though - I think I finally got a feel for how I want the rest of my website to feel basically. Heres a full tour of what I have so far. What I’ve done: LOTS of visual updates Filled out (almost) all of my sections Added a cool interactive card view for my biggest projects! Infinite carousel for some of my recent artworks!! (Not filled out yet) This might not seem like a lot for 10 hours but trust me trying to make this fit my liking took SO long…. It’s also been a lot more than just the editing, lots of prep work going into picking out what pictures to display, thinking about my ToS, other achievements…. :D My next plans are to… Add my artwork into the gallery Robotics & Regatta Pages (hopefully) I also forgot to add this in my original post but I spent a lot of time trying to make my website mobile friendly as well.
Devlog #4 ᯓ★ this isn’t gonna be the most informative post, instead I do wanna apologize for the lack of updates…!! i’ve gotten busy with school, seems like an excuse but applying for college is stressful and a lot!!! taking calculus & studying for every class ever blocks up my schedule. this three day weekend has given me the time to pick up on this project again and I couldn’t be happier. I’ve been making some progress in FRC so there is a lot to add to this page. I’ve started learning to program while I’ve been away so that’ll be showcased on here… hopefully. While this is a filler post, look at some of my progress :) i have to continue filling out the rest of this page, I spent a lot of time digging for more videos and thinking about how I want to organize the technical parts of this page. Thank you for reading. <3...
|
1792774515.9164813
|
1793379315.9164813
|
|
21139
|
The Girl on the Late Night Show by @hiwot | Starda The Girl on the Late Night Show by @hiwot | Stardance...
|
hiwot
|
0
|
7.47
|
0
|
[]
|
[{"post_id": 41652, "ts": "202 [{"post_id": 41652, "ts": "2026-08-06T00:39:11Z", "hours": 7.4686, "text": "I added I want to help users or gamers understand how this program or Python console game was made, what it is, and an overall summary."}]...
|
Title: The Girl on the Late Night Show by @hiwot | Title: The Girl on the Late Night Show by @hiwot | Stardance
Devlogs:
I added I want to help users or gamers understand how this program or Python console game was made, what it is, and an overall summary....
|
1792774517.0613043
|
1793379317.0613043
|
|
34624
|
My own site! by @jann_ | Stardance
|
jann_
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @jann_ | Stardance
|
1792774517.915998
|
1793379317.915998
|
|
31890
|
Jetshooter by @misho_linkov | Stardance
|
misho_linkov
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Jetshooter by @misho_linkov | Stardance
|
1792774518.745246
|
1793379318.745246
|
|
16003
|
My first slack bot! by @diya21 | Stardance
|
diya21
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @diya21 | Stardance
|
1792774522.1842303
|
1793379322.1842303
|
|
3563
|
My awesome macropad! by @theohusnik | Stardance
|
theohusnik
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @theohusnik | Stard Title: My awesome macropad! by @theohusnik | Stardance...
|
1792774523.046646
|
1793379323.046646
|
|
30453
|
slate by @swedishsplidney | Stardance
|
swedishsplidney
|
0
|
150.35
|
0
|
[]
|
[{"post_id": 73395, "ts": "202 [{"post_id": 73395, "ts": "2026-09-25T01:57:08Z", "hours": 8.295, "text": "shadows this one is really cool, i feel like it really takes it from looking like its from 1995 to like… 2015 maybe? it doesnt look that good but i think its a massive improvement! right now, its a 4096x4096 shadowmap with an extent of 24 units, a random noise filter to reduce pixelation, and 3x3 pcf to make it look somewhat smooth it is currently orthographic light projection only, but I think i’ll work on getting perspective lighting soon :) shadows did reqire implementing a whole new imageview, descriptor set, render pass, all that, but i’m getting used to it atp lol serialization is also completely broken right now, so I do need to fix that…"}, {"post_id": 67098, "ts": "2026-09-13T04:51:35Z", "hours": 7.6267, "text": "texture loading!!! absolute yipee moment this took like a lot of thinking to figure out how to implement for reasons that i think are obvious, but some of them are: how tf do you load an image what does the loaded image data mean how do you map the texture to the model’s uv coords how does normal mapping work how does the shader know where on the image its reading and a lot more that i prolly forgot lol this whole thing basically meant a whole shader overhaul again (even though i alr did that last devlog but its whatever loll) you can now map albedo (color), normal (height/offset), orm (occlusion, roughness, metallic), and emmision (glowiness) emission only kind of works rn lol, but i will get to it soon also, you currently have to manually set filepaths to the textures you want in the .json sidecar for that model, i need to add filepicker stuff to the inspector but i will get to it ok the textures in the video below were manually baked, packed, etc at 4096*4096 in blender i think another feature i should work on soon is procedural material generating, because texture mapping will always have a resolution limit (even 4k textures look kinda bad when mapped to larger models) i also want to change how reflections work a little bit, or maybe add anti-aliasing because right now the reflections look deep fried (as you will see in the video below)"}, {"post_id": 65721, "ts": "2026-09-11T02:04:30Z", "hours": 7.1881, "text": "shader overhaul so i noticed that the pbr shader lowkey looked kinda ugly and my microfacet solver was buns af so i js spent a while fixing it up and basically ended up going down a rabbit hole of tonemapping and completely rewrote the whole thing i switched from some random generic tonemapping to khronos standard neutral pbr mapping, which i think looks wayyyyyy better, the colors actually feel accurate now i also spent a little while setting up the shader to support texture colors when i get that all working it is wayyy better now, especially metallic things i also started setting up for texture imports but right now its only albedo and it does NOT work in the slightest lmao i think i will hopefully have texture importing and mapping done by next devlog, but uhhhhh…. no promises"}, {"post_id": 63897, "ts": "2026-09-07T22:41:08Z", "hours": 8.7083, "text": "physics aaaaaaaaaaaaaaaaa it works concerningly well and it actually makes me really happy to see it working i legit jumped for joy when i first saw stuff dropping due to gravity the actual underlying physics engine is jolt physics, but all the init and handling and all that is custom from me its all linked to the inspector and allat, so you can tweak values real time, such as body type, bounciness, friction, and mass its now a physics playground instead of just a glorified obj viewer scaling is very broken as far as colliders go, ill probably fix that soon you can start and stop the physics sim with f5"}, {"post_id": 62615, "ts": "2026-09-06T02:39:32Z", "hours": 5.9828, "text": "working scene serialization (saving) if you hit ctrl + s (or hit the gui button) then it creates a .slate file, containing all the data of every object in the scene this .slate file is human readable (and editable), written in a format very similar to toml heres an example .slate file: [ scene ] name = \"SlateScene\" version = \"1.0\" [[ entity ]] index = 0 name = \"\" mesh_path = \"models/test_obj.obj\" position = [ -0.310723 , 0.927019 , 1.47743 ] rotation = [ 0 , -0 , 0 ] scale = [ 1.9916 , 2.28848 , 3.38984 ] [ entity . material ] albedo = [ 0.183333 , 1 , 0 , 1 ] roughness = 0.5 metallic = 1 ior = 1.5 transmission = 0 [[ entity ]] index = 1 name = \"\" mesh_path = \"models/emerald_monkey.obj\" position = [ 1.29034 , 0 , -5.64025e-08 ] rotation = [ 8.61461 , 6.18611 , 2.71029 ] scale = [ 3.07852 , 3.38535 , 3.86504 ] [ entity . material ] albedo = [ 0.050432 , 0.800023 , 0.302281 , 1 ] roughness = 0 metallic = 0 ior = 2.418 transmission = 1 next, ill probably start working on physics"}, {"post_id": 61285, "ts": "2026-09-04T04:09:23Z", "hours": 8.2292, "text": "scene serialization okay so this is akward but it doesnt actually work yet, but in my defense serialization is really confusing to me since i generally don’t do a whole lot with file writing and loading, especially in a custom formatted and extensioned .slate file it basically just takes a bunch of data by looping through scene objects and records them, then it also has to do that backwards, then i also have to implement a command and gui system to trigger the logic and i also want the .slate to be easily readable, so i need to format the text in a way that makes sense (i’m taking inspiration from TOML) hopefully its done next devlog, but no promises lol"}, {"post_id": 59368, "ts": "2026-09-01T04:03:06Z", "hours": 8.3792, "text": "color picking! i noticed that setting color in the inspector with 3 rgb values was really annoying, so i made a whole new ui class ( ui_color_picker.hpp/cpp ), that can hook into any other ui it supports: S/B box + hue bar RGB input CMYK input (mildly broken) hex input (very broken) it actually works pretty well, there is some bug where an object can never be fully white but i think thats a command issue not color picker or inspector next, it might be time to work on physics"}, {"post_id": 58306, "ts": "2026-08-30T17:59:13Z", "hours": 8.5094, "text": "bugfixes and writing docs i spent a good 4 hours just going through some code, finding anything that might be wrong and fixing them. surprisingly, i didnt find that much, which means that i’m better at coding than i thought i found a few places where i just forgot to add something to a cleanup function, which could have led to a small memory leak over time, but nothing major some bugs i fixed: the background of any dropdown menu was rendering behind the viewport selecting stuff in the hierarchy wouldnt sync with the inspector properly i forgot to add screenPointToRay to my cleanup function some other things that i forgot i also added a few std::couts in some spots that needed them i also decided to start writing some docs because my brain was fried i basically just dug through my ~3000 lines of vulkan init and rendering code, and took notes throughout and tried explaining my confusing mental processes in a .md file this kinda made me realize that i do not have enough annotation in my code but thats a problem for future me :)"}, {"post_id": 56986, "ts": "2026-08-29T01:24:41Z", "hours": 8.5281, "text": "hierarchy panel and scrolling the hierarchy panel itself was actually not that hard, the hard part was coming up with a reliable system that can detect and list every object currently loaded in the scene without turning your pc into an explosive the other hard part was modifying the dockspace layout to be able to handle multiple different panels, because previously, it was just one window per dockspace panel, but now it can be as many as you want also, the scrolling system is new, it is its own class ui_scrollable_container , and it is basically doing what the dockspace used to do, but it also lets you scroll. so now, the dockspace just loads a scrollable container, and the scrollable container does all the arrangement and sizing logic. the hierarchy works exactly as you would expect it to, it lists current scene objects and then you can select them from it eventually, ill prolly add support for parenting, which should be pretty easy its kinda crazy to see my custom persistent ui system slowly turn into something useful as i add more features to it so far ive just been adding features when i need them, i havent just thought of features i might need and added all of them"}, {"post_id": 55367, "ts": "2026-08-27T04:34:36Z", "hours": 8.7392, "text": "inspector updates and dropdowns the inspector now has IOR and transmission values that you can change, ui updates, and dropdowns this took literally like 45 epochs because i was running into a materialgpu indexing issue where the inspector boxes would update the wrong values and my peanut brain didnt even think to check if i set the indices correctly dropdowns also took a good 3-4 hours, but it wasnt too bad, mostly just figuring out the correct logic in total, the dropdown class (ui_dropdown.cpp/hpp) is at 169 lines, and the inspector class (ui_inspector_panel.cpp/hpp) is at 470 lines next, i think ill either work on ui rounding or a file hierarchy viewer"}, {"post_id": 52171, "ts": "2026-08-22T08:13:19Z", "hours": 8.115, "text": "ui inspector the inspector is by no means done, but its a start! right now its just supposed to be purely functional, but i plan on making it look better in the future the input boxes are their own ui class, meaning i can have those input boxes everywhere making the ui system from scratch is very fun, but it at times i do regret not using qml or im gui, but overall, i dont regret making it from scratch too much the main issues with it right now is that the sensitivity values in the input boxes feel wrong, i think the position needs less sensitivity and the rotation needs more also, the color ones are a bit broken, theres a little bit of discrepancy between what the ui shows and what the actual .json material sidecar has written, so i’ll have to figure out how to fix that i think at some point, i want to add support for dropdowns, so each row can be expanded into larger input boxes if needed, or so the entire transform or material section can be collapsed i also need to add input boxes for IOR and transmission, i jus forgot to do that lol, should be pretty easy tho"}, {"post_id": 49355, "ts": "2026-08-18T04:12:43Z", "hours": 5.6403, "text": "rotation gizmo, multi-object support you can now switch between the translation gizmo, and the rotation gizmo, and click between objects to change what one has the gizmo active the gizmo also stays locked to the selected meshes’ local axes, i might add switching between local and global axis orientation at some point, but for right now local only is good enough all of the gizmo mesh is generated from code, not as an obj, making it very efficient and fast and robust, but making the logic that generates vertices in the right position was very annoying lol next, ill probably work on an inspector panel where you can edit an object’s location, rotation, scale, material data, etc or maybe saving the scene to file but now you can move and rotate any amount of objects to your heart’s content"}, {"post_id": 47420, "ts": "2026-08-15T10:46:06Z", "hours": 9.2511, "text": "translation gizmo this was like miserable to make lol it took me sooooooo long to get translation working, basically i had this samurai battle with a scaling issue for the longest time, i accidentally told my code that the viewport was smaller than it actually was and it just took forever to find that out this issue caused a really annoying issue where the actual location of the rendered gizmo was different than the clickable area there was also this other issue where the gizmo would move twice the speed of the mesh it was translating, but it was just a flaw with the mesh class, the gizmo was basically constantly recieving its own center as well as the meshes’ center which made it translate double but it works now, i think it works pretty well its all based off of the modular command system, so anything can call translatemeshcommand and it translate meshes next is prolly working on rotate and scale and stuff, all the other gizmos that we need the gizmos also meant a new .vert and .frag pair, and a whole new vulkan render pipeline lol"}, {"post_id": 43684, "ts": "2026-08-09T02:47:19Z", "hours": 9.0197, "text": "grid generation this took forever, and was much harder than i expected basically, i needed to create a whole new rendering pipeline and a whole new glsl shader pair, as well as coming up with logic so the triangle-focused renderer can actually render some super thin infinite lines the grid does generate dynamically around the camera view, so it is endless i think it does look pretty good tho next, ill prolly work on adding some move and rotation and maybe even scale tools"}, {"post_id": 37279, "ts": "2026-07-29T21:25:56Z", "hours": 9.8689, "text": "mesh importing and refraction ima start off by saying that this isn’t true refraction, since that requires path tracing, which is really computationally intensive instead, i went with screen space refraction offset approximation , which is a good, efficient refraction approximator that i still think looks pretty cool material data for refraction the value that determines the transparency of an object is called transmission , and the value for refraction is index of refraction (or IOR) the current filesystem for materials that i have is .mtl files, because thats the standard filetype for exporting materials with objs from programs like blender. however, .mtl is a filesystem from the 1990s that was originally created for phong systems, meaning it doesnt really contain transmission values so, i created a json sidecar system, that generates a better, more robust, human readable material file for every model. so now, when you import an obj/mtl pair: it checks for a json sidecar file if there is one already, just load from that and finish! if there isn’t one already, now read the .mtl, extract as much info as you can from that, and write it to a new json file multi pass rendering in order to correctly render transparent meshes, you need at least 2 render passes (render the opaque ones first, then the transparent ones) also, for the refraction to work, it needs an image of everything behind it, so in between the opaque and transparent pass, it quickly copies everything on the screen to an offscreen framebuffer how the refraction works 1. get the view vector (v): this one’s simple, just evaluate the view direction from the fragment position to the camera position also, adjust the normal (n) if rendering backface 2. refraction vector (snell’s law): the refraction vector is actually easy too, glsl has a built in refract intrinsic so you just drive that with a clamped ior value 3. deviation mapping: to determine how much to bend the background scene texture, just calculate the deviation vector between the refracted ray and the view ray: vec3 rayDeviation = refractDir - (- V ); vec2 distortion = ( push . viewProjMatrix * vec4 ( rayDeviation , 0.0 )). xy * 0.05 * transmission ; 4. uv sampling + composite blending offset the screen coordinates, but in order to prevent the edges from exploding, it needs to be clamped also, sample the background buffer to blend lighting and make a fresnel rim other stuff i did: i also made a full custom persistent ui system (this took a while), and a command system, because hardcoding the ui to do stuff is bad so instead of the ui code directly running logic, clicking a button just sends a command to the command system this meant creating another render pass, meaning i’m up to 3 render passes per frame now the only command so far is file.import_mesh , which is also hooked into the ui (you can see in the video below)"}, {"post_id": 35648, "ts": "2026-07-27T07:01:43Z", "hours": 7.2731, "text": "pbr materials pbr math reflectance: this is the main equation that a cook-torrance pbr system, all the other equations lead back to this one at some point 𝐿𝑜(𝑝,𝜔𝑜) =𝐿𝑒(𝑝,𝜔𝑜) +∫Ω𝑓𝑟(𝑝,𝜔𝑖,𝜔𝑜)𝐿𝑖(𝑝,𝜔𝑖)(𝐧⋅𝜔𝑖)𝑑𝜔𝑖 this equation essentially just determines what light does after hitting a surface with specific parameters we approximate the integral with two different light interactions: diffuse (𝑘𝐷): any light that penetrates the surface, scatters internally, and re-emerges specular (𝑘𝑆): light that reflects directly off the micro-surface in the code itself, the total outgoing radiance ($L_o$) is calculated with: vec3 Lo = ( kD * albedo / PI + specular ) * radiance * NdotL ; cook-torrance brdf: the specular component is calculated using the cook-torrance microfacet brdf: ## 𝑓cook-torrance =𝐷⋅𝐺⋅𝐹 / 4(𝐍⋅𝐕)(𝐍⋅𝐋) where 𝐷, 𝐺, and 𝐹 represent: normal distribution (𝐷): the NDF statistical distribution calculates how many microfacets are aligned with the halfway vector ($𝐇=𝐕+𝐋 / abs(𝐕+𝐋)) 𝐷GGX(𝐍,𝐇,𝛼) = 𝛼^2 / 𝜋((𝐍⋅𝐇)2(𝛼2−1)+1)2 ```glsl float DistributionGGX(vec3 N, vec3 H, float roughness) { float a = roughness * roughness; float a2 = a * a; float NdotH = max(dot(N, H), 0.0); float NdotH2 = NdotH * NdotH; float num = a2; float denom = (NdotH2 * (a2 - 1.0) + 1.0); denom = PI * denom * denom; return num / max(denom, 0.000001); } ``` geometry (𝐺): smiths schlick-ggx microfacets can cast shadows and obscure light from the camera too, so the geometry function calculates the self shading factor using smiths method: 𝐺(𝐍,𝐕,𝐋,𝑘) =𝐺1(𝐍,𝐕,𝑘) ⋅𝐺1(𝐍,𝐋,𝑘) where 𝑘 maps roughness for direct lighting using 𝑘 = (roughness+1)^2 / 8: ```glsl float GeometrySchlickGGX(float NdotV, float roughness) { float r = (roughness + 1.0); float k = (r * r) / 8.0; float num = NdotV; float denom = NdotV * (1.0 - k) + k; return num / denom; } float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness) { float NdotV = max(dot(N, V), 0.0); float NdotL = max(dot(N, L), 0.0); float ggx2 = GeometrySchlickGGX(NdotV, roughness); float ggx1 = GeometrySchlickGGX(NdotL, roughness); return ggx1 * ggx2; } ``` fresnel equation (𝐹): fresnel-schlick approximation the fresnel factor calculates the percentage of light reflected versus absorbed based on the viewing angle (𝜃): 𝐹(𝜃,𝐹0) =𝐹0 +(1−𝐹0)(1−cos𝜃)^5 nonmetals reflect around 4% of light (𝐹0 =0.04), while metals (conductors) use their tinted base albedo color as 𝐹0: ```glsl vec3 fresnelSchlick(float cosTheta, vec3 F0) { return F0 + (1.0 - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0); } // lower, inside main(): vec3 F0 = mix(vec3(0.04), albedo, metallic); vec3 F = fresnelSchlick(max(dot(H, V), 0.0), F0); ``` other stuff: a surface cant reflect more light than it recieves, so a simple equation is used to make sure this doesnt happen: ## 𝐤𝐃 =(1−𝐤𝐒) ⋅(1−metallic) right now, all the material data is pulled from a .mtl file i also added bindless ssbo storage so it doesnt explode when you have a lot of models next, i might keep working on the custom persistent ui system"}, {"post_id": 32732, "ts": "2026-07-22T02:20:30Z", "hours": 8.3064, "text": "custom obj file loading all of the obj loading is done using tinyobjloader , which is a popular header file that im using to get the raw vertex coords of any .obj file however, all tinyobj does is pass the raw vertex data to my code (technically it can do some basic triangulation, but thats not its main purpose so its not perfect) this means that any model with n-gons (complex polygons) will not work and will look super weird technically you can tell blender to explicitly triangulate a file when you export it, but i think that it should be able to take any obj that you can throw at it without needing external setup so i also added a popular header file called earcut , which at a basic level, just cuts any complex polygons into 3-vertex triangles (which my index pass and renderer accepts). this now means that it can load any custom obj file i want to add auto color loading (from the obj data) or texture loading next, or maybe work on the ui or add ambient occlusion"}, {"post_id": 25108, "ts": "2026-07-09T03:12:17Z", "hours": 6.5614, "text": "entered the 3rd dimension wasd movement made a whole separate Camera class (look at me keepin things organized ) this means that now the vulkan_renderer class has model, projection, view, and transform matrices: the model matrix tracks the transformations the view matrix essentially tracks where the camera is the projection matrix sets a perspective frustum in order to make things actually have perspective and not just be flat the lerping is also based on deltaTime, which means smooth movement no matter ur fps the mouse tracking is locked via SDL_SetWindowRelativeMouseMode , and can be unlocked with the escape key vertices and index buffers right now, the vertices are being set manually in my code… however, importing obj (and maybe gltf and stl) files is next on the feature list, i’m planning on using tinyobj all the geometry is indexed, which basically means that instead of wasting a ton of memory repeating data for 36 raw vertices, you can just define the 8 corner vertices, then use an index buffer pass to tell the gpu how to connect those 8 vertices into 12 triangles window resizing this was easy, basically just had to tell it to make new image views and framebuffers based on the current aspect ratio (w/h) when the size of the window changes so now, its a spinning cube in a resizeable window that you can move around with wasd"}, {"post_id": 22507, "ts": "2026-07-05T00:42:28Z", "hours": 6.1236, "text": "the window opens (!!) so, why did it take me 6 hours to get a window to open? it kinda just comes down to the fact that vulkan is vulkan on other apis such as opengl, the graphics driver just does stuff for you. you can say sumn like “open a window and make it pink” and it just does the memory, thread syncing, and goofy platform stuff for you vulkan on the other hand, wants none of that. if you dont specifically ask for something, it wont happen. this does make it significantly harder (and much easier to create a gpu-ending vram overflow) to code with, but it does have the benifit of being much more powerful, having no overhead, and 100% control. its not gonna do anything that you dont tell it to so what do you have to do to open a beautiful grey window with vulkan? os bridge (sdl3): instead of writing a whole abstraction for wayland/x11, win32 and metal, you just have to tell sdl3 that you’re making a vulkan window, and it does some magic stuff vulkan instance ( VkInstance ): this is how you get into the vulkan sdk. you kinda just have to tell vulkan everything it needs to know and ask sdl what extensions you need window surface ( VkSurfaceKHR ): vulkan is kinda dumb and doesnt know what a window actually is, so this is where sdl tells vulkan where it can actually write pixels pick a physical device: scan the current hardware, loop through every available device, and then just pick the best one (eventually ill probably add a way to select a custom one) logical device ( VkDevice ): the physical device is the actual doohickey in your computer that runs stuff, the logical device is the software’s interface to it. swapchain ( VkSwapchainKHR ): vulkan can’t actually write images directly to the screen (and that would look bad anyway), so you make a swapchain. my code does double buffering (basically vsync), which means that the screen displays image a, while the gpu is rendering image b. render pass and framebuffers: basically just telling vulkan what to do (in this case, clear the screen, then draw the color). the framebuffer just binds the swapchain image views to the render pass synchronization and command subsystem: believe it or not, your gpu’s clock speed is usually around (or more than) half of your cpu’s clock speed, so you have to make sure that your code waits for the gpu is ready before running the next c++ line. if you don’t, your gpu ram and cache will overflow. overall, this took a total of 764 lines of code just to get a grey window the nice part is that the progress that i’ll make is exponential, since the very beginning stuff takes the longest i also made a logo (the current project page banner)"}]...
|
Title: slate by @swedishsplidney | Stardance
Devl Title: slate by @swedishsplidney | Stardance
Devlogs:
the window opens (!!) so, why did it take me 6 hours to get a window to open? it kinda just comes down to the fact that vulkan is vulkan on other apis such as opengl, the graphics driver just does stuff for you. you can say sumn like “open a window and make it pink” and it just does the memory, thread syncing, and goofy platform stuff for you vulkan on the other hand, wants none of that. if you dont specifically ask for something, it wont happen. this does make it significantly harder (and much easier to create a gpu-ending vram overflow) to code with, but it does have the benifit of being much more powerful, having no overhead, and 100% control. its not gonna do anything that you dont tell it to so what do you have to do to open a beautiful grey window with vulkan? os bridge (sdl3): instead of writing a whole abstraction for wayland/x11, win32 and metal, you just have to tell sdl3 that you’re making a vulkan window, and it does some magic stuff vulkan instance ( VkInstance ): this is how you get into the vulkan sdk. you kinda just have to tell vulkan everything it needs to know and ask sdl what extensions you need window surface ( VkSurfaceKHR ): vulkan is kinda dumb and doesnt know what a window actually is, so this is where sdl tells vulkan where it can actually write pixels pick a physical device: scan the current hardware, loop through every available device, and then just pick the best one (eventually ill probably add a way to select a custom one) logical device ( VkDevice ): the physical device is the actual doohickey in your computer that runs stuff, the logical device is the software’s interface to it. swapchain ( VkSwapchainKHR ): vulkan can’t actually write images directly to the screen (and that would look bad anyway), so you make a swapchain. my code does double buffering (basically vsync), which means that the screen displays image a, while the gpu is rendering image b. render pass and framebuffers: basically just telling vulkan what to do (in this case, clear the screen, then draw the color). the framebuffer just binds the swapchain image views to the render pass synchronization and command subsystem: believe it or not, your gpu’s clock speed is usually around (or more than) half of your cpu’s clock speed, so you have to make sure that your code waits for the gpu is ready before running the next c++ line. if you don’t, your gpu ram and cache will overflow. overall, this took a total of 764 lines of code just to get a grey window the nice part is that the progress that i’ll make is exponential, since the very beginning stuff takes the longest i also made a logo (the current project page banner)
entered the 3rd dimension wasd movement made a whole separate Camera class (look at me keepin things organized ) this means that now the vulkan_renderer class has model, projection, view, and transform matrices: the model matrix tracks the transformations the view matrix essentially tracks where the camera is the projection matrix sets a perspective frustum in order to make things actually have perspective and not just be flat the lerping is also based on deltaTime, which means smooth movement no matter ur fps the mouse tracking is locked via SDL_SetWindowRelativeMouseMode , and can be unlocked with the escape key vertices and index buffers right now, the vertices are being set manually in my code… however, importing obj (and maybe gltf and stl) files is next on the feature list, i’m planning on using tinyobj all the geometry is indexed, which basically means that instead of wasting a ton of memory repeating data for 36 raw vertices, you can just define the 8 corner vertices, then use an index buffer pass to tell the gpu how to connect those 8 vertices into 12 triangles window resizing this was easy, basically just had to tell it to make new image views and framebuffers based on the current aspect ratio (w/h) when the size of the window changes so now, its a spinning cube in a resizeable window that you can move around with wasd
custom obj file loading all of the obj loading is done using tinyobjloader , which is a popular header file that im using to get the raw vertex coords of any .obj file however, all tinyobj does is pass the raw vertex data to my code (technically it can do some basic triangulation, but thats not its main purpose so its not perfect) this means that any model with n-gons (complex polygons) will not work and will look super weird technically you can tell blender to explicitly triangulate a file when you export it, but i think that it should be able to take any obj that you can throw at it without needing external setup so i also added a popular header file called earcut , which at a basic level, just cuts any complex polygons into 3-vertex triangles (which my index pass and renderer accepts). this now means that it can load any custom obj file i want to add auto color loading (from the obj data) or texture loading next, or maybe work on the ui or add ambient occlusion
pbr materials pbr math reflectance: this is the main equation that a cook-torrance pbr system, all the other equations lead back to this one at some point 𝐿𝑜(𝑝,𝜔𝑜) =𝐿𝑒(𝑝,𝜔𝑜) +∫Ω𝑓𝑟(𝑝,𝜔𝑖,𝜔𝑜)𝐿𝑖(𝑝,𝜔𝑖)(𝐧⋅𝜔𝑖)𝑑𝜔𝑖 this equation essentially just determines what light does after hitting a surface with specific parameters we approximate the integral with two different light interactions: diffuse (𝑘𝐷): any light that penetrates the surface, scatters internally, and re-emerges specular (𝑘𝑆): light that reflects directly off the micro-surface in the code itself, the total outgoing radiance ($L_o$) is calculated with: vec3 Lo = ( kD * albedo / PI + specular ) * radiance * NdotL ; cook-torrance brdf: the specular component is calculated using the cook-torrance microfacet brdf: ## 𝑓cook-torrance =𝐷⋅𝐺⋅𝐹 / 4(𝐍⋅𝐕)(𝐍⋅𝐋) where 𝐷, 𝐺, and 𝐹 represent: normal distribution (𝐷): the NDF statistical distribution calculates how many microfacets are aligned with the halfway vector ($𝐇=𝐕+𝐋 / abs(𝐕+𝐋)) 𝐷GGX(𝐍,𝐇,𝛼) = 𝛼^2 / 𝜋((𝐍⋅𝐇)2(𝛼2−1)+1)2 ```glsl float DistributionGGX(vec3 N, vec3 H, float roughness) { float a = roughness * roughness; float a2 = a * a; float NdotH = max(dot(N, H), 0.0); float NdotH2 = NdotH * NdotH; float num = a2; float denom = (NdotH2 * (a2 - 1.0) + 1.0); denom = PI * denom * denom; return num / max(denom, 0.000001); } ``` geometry (𝐺): smiths schlick-ggx microfacets can cast shadows and obscure light from the camera too, so the geometry function calculates the self shading factor using smiths method: 𝐺(𝐍,𝐕,𝐋,𝑘) =𝐺1(𝐍,𝐕,𝑘) ⋅𝐺1(𝐍,𝐋,𝑘) where 𝑘 maps roughness for direct lighting using 𝑘 = (roughness+1)^2 / 8: ```glsl float GeometrySchlickGGX(float NdotV, float roughness) { float r = (roughness + 1.0); float k = (r * r) / 8.0; float num = NdotV; float denom = NdotV * (1.0 - k) + k; return num / denom; } float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness) { float NdotV = max(dot(N, V), 0.0); float NdotL = max(dot(N, L), 0.0); float ggx2 = GeometrySchlickGGX(NdotV, roughness); float ggx1 = GeometrySchlickGGX(NdotL, roughness); return ggx1 * ggx2; } ``` fresnel equation (𝐹): fresnel-schlick approximation the fresnel factor calculates the percentage of light reflected versus absorbed based on the viewing angle (𝜃): 𝐹(𝜃,𝐹0) =𝐹0 +(1−𝐹0)(1−cos𝜃)^5 nonmetals reflect around 4% of light (𝐹0 =0.04), while metals (conductors) use their tinted base albedo color as 𝐹0: ```glsl vec3 fresnelSchlick(float cosTheta, vec3 F0) { return F0 + (1.0 - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0); } // lower, inside main(): vec3 F0 = mix(vec3(0.04), albedo, metallic); vec3 F = fresnelSchlick(max(dot(H, V), 0.0), F0); ``` other stuff: a surface cant reflect more light than it recieves, so a simple equation is used to make sure this doesnt happen: ## 𝐤𝐃 =(1−𝐤𝐒) ⋅(1−metallic) right now, all the material data is pulled from a .mtl file i also added bindless ssbo storage so it doesnt explode when you have a lot of models next, i might keep working on the custom persistent ui system
mesh importing and refraction ima start off by saying that this isn’t true refraction, since that requires path tracing, which is really computationally intensive instead, i went with screen space refraction offset approximation , which is a good, efficient refraction approximator that i still think looks pretty cool material data for refraction the value that determines the transparency of an object is called transmission , and the value for refraction is index of refraction (or IOR) the current filesystem for materials that i have is .mtl files, because thats the standard filetype for exporting materials with objs from programs like blender. however, .mtl is a filesystem from the 1990s that was originally created for phong systems, meaning it doesnt really contain transmission values so, i created a json sidecar system, that generates a better, more robust, human readable material file for every model. so now, when you import an obj/mtl pair: it checks for a json sidecar file if there is one already, just load from that and finish! if there isn’t one already, now read the .mtl, extract as much info as you can from that, and write it to a new json file multi pass rendering in order to correctly render transparent meshes, you need at least 2 render passes (render the opaque ones first, then the transparent ones) also, for the refraction to work, it needs an image of everything behind it, so in between the opaque and transparent pass, it quickly copies everything on the screen to an offscreen framebuffer how the refraction works 1. get the view vector (v): this one’s simple, just evaluate the view direction from the fragment position to the camera position also, adjust the normal (n) if rendering backface 2. refraction vector (snell’s law): the refraction vector is actually easy too, glsl has a built in refract intrinsic so you just drive that with a clamped ior value 3. deviation mapping: to determine how much to bend the background scene texture, just calculate the deviation vector between the refracted ray and the view ray: vec3 rayDeviation = refractDir - (- V ); vec2 distortion = ( push . viewProjMatrix * vec4 ( rayDeviation , 0.0 )). xy * 0.05 * transmission ; 4. uv sampling + composite blending offset the screen coordinates, but in order to prevent the edges from exploding, it needs to be clamped also, sample the background buffer to blend lighting and make a fresnel rim other stuff i did: i also made a full custom persistent ui system (this took a while), and a command system, because hardcoding the ui to do stuff is bad so instead of the ui code directly running logic, clicking a button just sends a command to the command system this meant creating another render pass, meaning i’m up to 3 render passes per frame now the only command so far is file.import_mesh , which is also hooked into the ui (you can see in the video below)
grid generation this took forever, and was much harder than i expected basically, i needed to create a whole new rendering pipeline and a whole new glsl shader pair, as well as coming up with logic so the triangle-focused renderer can actually render some super thin infinite lines the grid does generate dynamically around the camera view, so it is endless i think it does look pretty good tho next, ill prolly work on adding some move and rotation and maybe even scale tools
translation gizmo this was like miserable to make lol it took me sooooooo long to get translation working, basically i had this samurai battle with a scaling issue for the longest time, i accidentally told my code that the viewport was smaller than it actually was and it just took forever to find that out this issue caused a really annoying issue where the actual location of the rendered gizmo was different than the clickable area there was also this other issue where the gizmo would move twice the speed of the mesh it was translating, but it was just a flaw with the mesh class, the gizmo was basically constantly recieving its own center as well as the meshes’ center which made it translate double but it works now, i think it works pretty well its all based off of the modular command system, so anything can call translatemeshcommand and it translate meshes next is prolly working on rotate and scale and stuff, all the other gizmos that we need the gizmos also meant a new .vert and .frag pair, and a whole new vulkan render pipeline lol
rotation gizmo, multi-object support you can now switch between the translation gizmo, and the rotation gizmo, and click between objects to change what one has the gizmo active the gizmo also stays locked to the selected meshes’ local axes, i might add switching between local and global axis orientation at some point, but for right now local only is good enough all of the gizmo mesh is generated from code, not as an obj, making it very efficient and fast and robust, but making the logic that generates vertices in the right position was very annoying lol next, ill probably work on an inspector panel where you can edit an object’s location, rotation, scale, material data, etc or maybe saving the scene to file but now you can move and rotate any amount of objects to your heart’s content
ui inspector the inspector is by no means done, but its a start! right now its just supposed to be purely functional, but i plan on making it look better in the future the input boxes are their own ui class, meaning i can have those input boxes everywhere making the ui system from scratch is very fun, but it at times i do regret not using qml or im gui, but overall, i dont regret making it from scratch too much the main issues with it right now is that the sensitivity values in the input boxes feel wrong, i think the position needs less sensitivity and the rotation needs more also, the color ones are a bit broken, theres a little bit of discrepancy between what the ui shows and what the actual .json material sidecar has written, so i’ll have to figure out how to fix that i think at some point, i want to add support for dropdowns, so each row can be expanded into larger input boxes if needed, or so the entire transform or material section can be collapsed i also need to add input boxes for IOR and transmission, i jus forgot to do that lol, should be pretty easy tho
inspector updates and dropdowns the inspector now has IOR and transmission values that you can change, ui updates, and dropdowns this took literally like 45 epochs because i was running into a materialgpu indexing issue where the inspector boxes would update the wrong values and my peanut brain didnt even think to check if i set the indices correctly dropdowns also took a good 3-4 hours, but it wasnt too bad, mostly just figuring out the correct logic in total, the dropdown class (ui_dropdown.cpp/hpp) is at 169 lines, and the inspector class (ui_inspector_panel.cpp/hpp) is at 470 lines next, i think ill either work on ui rounding or a file hierarchy viewer
hierarchy panel and scrolling the hierarchy panel itself was actually not that hard, the hard part was coming up with a reliable system that can detect and list every object currently loaded in the scene without turning your pc into an explosive the other hard part was modifying the dockspace layout to be able to handle multiple different panels, because previously, it was just one window per dockspace panel, but now it can be as many as you want also, the scrolling system is new, it is its own class ui_scrollable_container , and it is basically doing what the dockspace used to do, but it also lets you scroll. so now, the dockspace just loads a scrollable container, and the scrollable container does all the arrangement and sizing logic. the hierarchy works exactly as you would expect it to, it lists current scene objects and then you can select them from it eventually, ill prolly add support for parenting, which should be pretty easy its kinda crazy to see my custom persistent ui system slowly turn into something useful as i add more features to it so far ive just been adding features when i need them, i havent just thought of features i might need and added all of them
bugfixes and writing docs i spent a good 4 hours just going through some code, finding anything that might be wrong and fixing them. surprisingly, i didnt find that much, which means that i’m better at coding than i thought i found a few places where i just forgot to add something to a cleanup function, which could have led to a small memory leak over time, but nothing major some bugs i fixed: the background of any dropdown menu was rendering behind the viewport selecting stuff in the hierarchy wouldnt sync with the inspector properly i forgot to add screenPointToRay to my cleanup function some other things that i forgot i also added a few std::couts in some spots that needed them i also decided to start writing some docs because my brain was fried i basically just dug through my ~3000 lines of vulkan init and rendering code, and took notes throughout and tried explaining my confusing mental processes in a .md file this kinda made me realize that i do not have enough annotation in my code but thats a problem for future me :)
color picking! i noticed that setting color in the inspector with 3 rgb values was really annoying, so i made a whole new ui class ( ui_color_picker.hpp/cpp ), that can hook into any other ui it supports: S/B box + hue bar RGB input CMYK input (mildly broken) hex input (very broken) it actually works pretty well, there is some bug where an object can never be fully white but i think thats a command issue not color picker or inspector next, it might be time to work on physics
scene serialization okay so this is akward but it doesnt actually work yet, but in my defense serialization is really confusing to me since i generally don’t do a whole lot with file writing and loading, especially in a custom formatted and extensioned .slate file it basically just takes a bunch of data by looping through scene objects and records them, then it also has to do that backwards, then i also have to implement a command and gui system to trigger the logic and i also want the .slate to be easily readable, so i need to format the text in a way that makes sense (i’m taking inspiration from TOML) hopefully its done next devlog, but no promises lol
working scene serialization (saving) if you hit ctrl + s (or hit the gui button) then it creates a .slate file, containing all the data of every object in the scene this .slate file is human readable (and editable), written in a format very similar to toml heres an example .slate file: [ scene ] name = "SlateScene" version = "1.0" [[ entity ]] index = 0 name = "" mesh_path = "models/test_obj.obj" position = [ -0.310723 , 0.927019 , 1.47743 ] rotation = [ 0 , -0 , 0 ] scale = [ 1.9916 , 2.28848 , 3.38984 ] [ entity . material ] albedo = [ 0.183333 , 1 , 0 , 1 ] roughness = 0.5 metallic = 1 ior = 1.5 transmission = 0 [[ entity ]] index = 1 name = "" mesh_path = "models/emerald_monkey.obj" position = [ 1.29034 , 0 , -5.64025e-08 ] rotation = [ 8.61461 , 6.18611 , 2.71029 ] scale = [ 3.07852 , 3.38535 , 3.86504 ] [ entity . material ] albedo = [ 0.050432 , 0.800023 , 0.302281 , 1 ] roughness = 0 metallic = 0 ior = 2.418 transmission = 1 next, ill probably start working on physics
physics aaaaaaaaaaaaaaaaa it works concerningly well and it actually makes me really happy to see it working i legit jumped for joy when i first saw stuff dropping due to gravity the actual underlying physics engine is jolt physics, but all the init and handling and all that is custom from me its all linked to the inspector and allat, so you can tweak values real time, such as body type, bounciness, friction, and mass its now a physics playground instead of just a glorified obj viewer scaling is very broken as far as colliders go, ill probably fix that soon you can start and stop the physics sim with f5
shader overhaul so i noticed that the pbr shader lowkey looked kinda ugly and my microfacet solver was buns af so i js spent a while fixing it up and basically ended up going down a rabbit hole of tonemapping and completely rewrote the whole thing i switched from some random generic tonemapping to khronos standard neutral pbr mapping, which i think looks wayyyyyy better, the colors actually feel accurate now i also spent a little while setting up the shader to support texture colors when i get that all working it is wayyy better now, especially metallic things i also started setting up for texture imports but right now its only albedo and it does NOT work in the slightest lmao i think i will hopefully have texture importing and mapping done by next devlog, but uhhhhh…. no promises
texture loading!!! absolute yipee moment this took like a lot of thinking to figure out how to implement for reasons that i think are obvious, but some of them are: how tf do you load an image what does the loaded image data mean how do you map the texture to the model’s uv coords how does normal mapping work how does the shader know where on the image its reading and a lot more that i prolly forgot lol this whole thing basically meant a whole shader overhaul again (even though i alr did that last devlog but its whatever loll) you can now map albedo (color), normal (height/offset), orm (occlusion, roughness, metallic), and emmision (glowiness) emission only kind of works rn lol, but i will get to it soon also, you currently have to manually set filepaths to the textures you want in the .json sidecar for that model, i need to add filepicker stuff to the inspector but i will get to it ok the textures in the video below were manually baked, packed, etc at 4096*4096 in blender i think another feature i should work on soon is procedural material generating, because texture mapping will always have a resolution limit (even 4k textures look kinda bad when mapped to larger models) i also want to change how reflections work a little bit, or maybe add anti-aliasing because right now the reflections look deep fried (as you will see in the video below)
shadows this one is really cool, i feel like it really takes it from looking like its from 1995 to like… 2015 maybe? it doesnt look that good but i think its a massive improvement! right now, its a 4096x4096 shadowmap with an extent of 24 units, a random noise filter to reduce pixelation, and 3x3 pcf to make it look somewhat smooth it is currently orthographic light projection only, but I think i’ll work on getting perspective lighting soon :) shadows did reqire implementing a whole new imageview, descriptor set, render pass, all that, but i’m getting used to it atp lol serialization is also completely broken right now, so I do need to fix that…...
|
1792774523.8995285
|
1793379323.8995285
|
|
3381
|
WonderWild by @fernandazam319 | Stardance
|
fernandazam319
|
0
|
0.8
|
0
|
[]
|
[{"post_id": 24263, "ts": "202 [{"post_id": 24263, "ts": "2026-07-07T18:30:34Z", "hours": 0.7981, "text": "i made the simple mechanics for my game and created the sprites. next step: add images to make it less plain"}]...
|
Title: WonderWild by @fernandazam319 | Stardance
Title: WonderWild by @fernandazam319 | Stardance
Devlogs:
i made the simple mechanics for my game and created the sprites. next step: add images to make it less plain...
|
1792774525.3603978
|
1793379325.3603978
|
|
71067
|
My own site! by @harshittomar621 | Stardance
|
harshittomar621
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @harshittomar621 | Stardanc Title: My own site! by @harshittomar621 | Stardance...
|
1792777646.0042763
|
1793382446.0042763
|
|
71068
|
My own site! by @aman_mnir | Stardance
|
aman_mnir
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @aman_mnir | Stardance
|
1792777647.0570724
|
1793382447.0570724
|
|
71069
|
My awesome macropad! by @gggkjvvvvvvvgkgvgv | Star My awesome macropad! by @gggkjvvvvvvvgkgvgv | Stardance...
|
gggkjvvvvvvvgkgvgv
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @gggkjvvvvvvvgkgvgv Title: My awesome macropad! by @gggkjvvvvvvvgkgvgv | Stardance...
|
1792777647.9121747
|
1793382447.9121747
|
|
71070
|
triviagame by @oyebolaademilade | Stardance
|
oyebolaademilade
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: triviagame by @oyebolaademilade | Stardance
|
1792777652.0157413
|
1793382452.0157413
|
|
71071
|
Cybersense by @muadth | Stardance
|
muadth
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Cybersense by @muadth | Stardance
|
1792777652.8500233
|
1793382452.8500233
|
|
6433
|
Macropad For Obs by @Mlen | Stardance
|
Mlen
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Macropad For Obs by @Mlen | Stardance
|
1792777654.117555
|
1793382454.117555
|
|
35989
|
Atlas by @shinesuri | Stardance
|
shinesuri
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Atlas by @shinesuri | Stardance
|
1792777655.0092723
|
1793382455.0092723
|
|
18460
|
My awesome macropad! by @uma_srolo | Stardance
|
uma_srolo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @uma_srolo | Starda Title: My awesome macropad! by @uma_srolo | Stardance...
|
1792777655.858955
|
1793382455.858955
|
|
2591
|
Fire detection system by @ahamedayyash111 | Starda Fire detection system by @ahamedayyash111 | Stardance...
|
ahamedayyash111
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Fire detection system by @ahamedayyash111 | Title: Fire detection system by @ahamedayyash111 | Stardance...
|
1792777656.6909988
|
1793382456.6909988
|
|
19067
|
Nice thing by @erickim | Stardance
|
erickim
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Nice thing by @erickim | Stardance
|
1792777657.5291862
|
1793382457.5291862
|