Kahoneki's Avatar

Kahoneki

@kahoneki.com.bsky.social

https://kahoneki.com/ ๐Ÿ“ Graphics Enthusiast and Maths Enjoyer :]]]] ๐ŸŒŸ She/Her ๐ŸŽฎ Currently working on a Vulkan/DX12/PS5 Render Engine ๐Ÿ“– 3rd Year Computer Games Technology Student @ Abertay University

82 Followers  |  314 Following  |  110 Posts  |  Joined: 24.10.2024  |  1.8826

Latest posts by kahoneki.com on Bluesky

right as you walk in, kick your feet up on the interviewer's desk and say "enough about me, why should i work for you?"

19.10.2025 13:00 โ€” ๐Ÿ‘ 5    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

if the universe turns out to be deterministic im making all my objects constexpr

19.10.2025 07:08 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

((((and out-of-core rendering with HLODs if i have time........ i just think it'd be cool........))))

18.10.2025 09:20 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

might be shooting myself in the foot here by saying my plans before ive actually figured out if it'll be possible (this is for a school project so due in a couple months), but id like to try and get 3d physics, networking, and serialisation for saving/loading in before submission....
wish me luck :>

18.10.2025 09:14 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Video thumbnail

and it is indeed up-to-date with the graphics samples

18.10.2025 09:09 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image Post image

here's a lil sample of the ECS in action, first in the user's code and second in the backend RenderSystem :>

18.10.2025 09:09 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

the entrypoint is owned by the engine, and it gets linked to the user's code through those function declarations that the user is expected to define

18.10.2025 09:06 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

been a lil while since the last update, but ive been busy converting my render engine to a fully fledged game engine !!

this has involved writing my own ECS framework which has taken up most of my time asdfjfhkdsj but it's done now :>

details below !

18.10.2025 09:05 โ€” ๐Ÿ‘ 4    ๐Ÿ” 1    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Video thumbnail

am i a graphics programmer yet ?

12.10.2025 01:52 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Video thumbnail

(ignore overwatch in my taskbar that's not relevant to the demonstration)

10.10.2025 05:17 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image Post image Post image

just got done adding MSAA and SSAA support to the vulkan side of things :>

the 1st image is with no anti aliasing, the 2nd image is with 8x MSAA (notice how the geometry edges are anti aliased but the textures are still jaggy, classic MSAA ๐Ÿ™„), and the 3rd is 4x SSAA

video in replies !!

10.10.2025 05:17 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

is it IBL time chat?

09.10.2025 03:13 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Video thumbnail

fixed the lighting !! looks a lot better now (had many issues with my tbn matrix n whatnot, classic tbn matrix amirite)

09.10.2025 03:12 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

testing this sample on my laptop running d3d12 at 4k did actually reveal some weird screen tearing issues so ill have to do some investigating there, doesn't happen on vulkan or 1080p dx12 though so probably just some weird dx12 quirk im not familiar with sdfjkhfsd

08.10.2025 20:57 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Video thumbnail

day 1 of PBR, this is just copied over from my old vulkan framework so it doesn't look great but it's a start !! and i can confirm all the textures (albedo, normal, roughness, metallic, ambient occlusion, and emissive) are being loaded correctly :>

also this is working on dx12 and vulkan

08.10.2025 20:55 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

gonna take a break now from the backend stuff so i can spend a while doing fun shading i think :>

08.10.2025 10:54 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

took a full day of locking tf in but textured models are finally implemented, works on both d3d12 and vulkan

08.10.2025 10:53 โ€” ๐Ÿ‘ 5    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Video thumbnail

camera camera camera camera !!!!

07.10.2025 04:21 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Video thumbnail

cube cube cube cube !!!!

06.10.2025 04:56 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

comms open

04.10.2025 06:04 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

surprise !! if you made it this far, you get to see the Neki logo with the proper colours after my dumbass remembered to use srgb format for the swapchain

04.10.2025 04:45 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

the GPUUploader class also has a EnqueueBufferDataUpload() function which is the same thing but for buffers instead of textures, so in the Texture sample, im batching my texture upload alongside the vertex and index buffer uploads

yap session concluded, thanks for reading :))

04.10.2025 04:34 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

i make it sound more complicated than it is i think sdfjhkfsd
this is it !!

04.10.2025 04:33 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

synchronisation is also handled quite nicely i think. when you call Flush() you pass in true/false depending on if you want to stall the calling thread until the flush is finished. If you set it to false, the function returns a fence that will be signalled when it's done so you know when to Reset()

04.10.2025 04:31 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

this means that a bunch of uploads (like if you had 1000 textures to upload) would all get batched together into a single staging buffer and the transfer commands submitted all at once

once it's done flushing, you call Reset() to clear the staging buffer and reset the command buffer

more below :>

04.10.2025 04:30 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

3) Call EnqueueTextureDataUpload() on an NK::GPUUploader - this will load your texture data into a subregion of its large staging buffer and record the commands for copying it to your texture
4) Call Flush() on the gpu uploader, executing all the enqueued commands !!

more below :>

04.10.2025 04:27 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

the current process for loading and using a texture is:
1) Load the image with NK::ImageLoader::LoadImage(), that gives you an ImageData object with the pixel data and a TextureDesc object that can be passed straight to:
2) device->CreateTexture(), which makes the GPU texture object

more below !!

04.10.2025 04:24 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

i should really get back to work on dx12 but i soooo don't wanna boot up windows....

anyway, i got image loading working on vulkan :>

04.10.2025 04:21 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
Post image Post image

textures and samplers implemented in vulkan !!
for now im just hardcoding in some colour bytes, will get round to actual image loading with stb soon enough.
first though ive got quite a bit of catching up to do with dx12....

03.10.2025 17:23 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

nothing gets me going in the morning more than the knowledge of a solution i spent 8 hours yesterday implementing needs to be entirely scrapped

02.10.2025 14:30 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

@kahoneki.com is following 20 prominent accounts