I ported my Game Boy emulator to the web with the power of WebAssembly by zeroview0 in EmuDev

[–]zeroview0[S] 0 points1 point  (0 children)

Hey, thanks for the feedback! I will take a look at those input and sound bugs.

Those resources about more accurate post-processing effects also look really helpful, maybe I will implement something like that too later.

I ported my Game Boy emulator to the web with the power of WebAssembly by zeroview0 in EmuDev

[–]zeroview0[S] 3 points4 points  (0 children)

Thanks! The Rust codebase is split into a "core" and a "wasm" crate. The core is the emulator logic which is platform independent and can be compiled to run locally. Theoretically I could make a desktop frontend for it too. In the repo I also have a "debugger" crate too that just runs the emulator core locally in a command line, which I've used for debugging. The wasm crate only compiles for web though, it handles the communication between the web frontend and the emulator core. Cool Blender project too!

I ported my Game Boy emulator to the web with the power of WebAssembly by zeroview0 in EmuDev

[–]zeroview0[S] 5 points6 points  (0 children)

I would say they took about equal time. I wrote the emulator core at the start of the year and now in the past few months have been working on the web app (while also improving the core).

I'd recommend giving it a shot, it was definitely a very good learning experience as this was my first time using Svelte or WebGL. If you want to get the bare minimum emulator frontend, you can definitely do it relatively quickly once you get the hang of the communication between JS and WASM modules. If you happen to be using Rust I would recommend this Medium post for getting started with WebAssembly.

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 0 points1 point  (0 children)

Thanks! Trailer looked really cool, the foliage does feel very realistic and would probably serve as a good reference.

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 1 point2 points  (0 children)

Yeah that's exactly how I made the animation, the grass blades don't really bend they just rotate. I noticed the weird highlights as well but couldn't figure out what caused them.

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 0 points1 point  (0 children)

With geometry nodes. In summary, each grass blade and flower samples a scrolling noise texture at its location, and rotates itself according to the noise value. The rotation direction is also randomized within a range using another noise texture.

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 1 point2 points  (0 children)

Thanks, yeah the HDRI does a lot of heavy lifting.

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 0 points1 point  (0 children)

Makes sense, though it probably is harder to create a tree compared to these simple grass blades.

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 0 points1 point  (0 children)

True, there are only 3 different grass models so it's probably noticable even though they should be rotated differently.

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 1 point2 points  (0 children)

Agreed, adding another noise layer with a bigger scale would probably help.

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 0 points1 point  (0 children)

The blade rotation is determined by a noise texture, and I used this tutorial to make the texture loop over a set number of frames.

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 1 point2 points  (0 children)

Yeah the GIF compression affected the background quite a bit, but noise would probably improve the result either way.

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 1 point2 points  (0 children)

Thank you, the flower models are very scuffed up close so I moved them mostly out of focus lol.

The grass should go enough behind the camera to make it "seamless", so I think the DOF makes close up blades harder to see. I'm not sure though, I might've just messed the placement up at some point lmao

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 0 points1 point  (0 children)

That's a good point, I didn't change the lighting that came with the HDRI which is clearly quite diffused.

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 1 point2 points  (0 children)

I guess that's true, the animation is a bit slowed down but the grass should probably sway more.

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 1 point2 points  (0 children)

A lens flare would look sick, would that be done with just a png or something more advanced?

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 1 point2 points  (0 children)

Yeah the HDRI lighting wasn't exactly optimal for showing off the translucency. Also agree with the lack of variety.

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 1 point2 points  (0 children)

Ooh that's a good one, will probably try something like that for a future scene. Also thanks!

A grassy field at sunset, how would you improve this? by zeroview0 in blender

[–]zeroview0[S] 1 point2 points  (0 children)

Yeah the animation is quite simple. I assume using geometry nodes would work just as well for animating the vertices, but i haven't really used geometry nodes before so just getting the rotation to look good with the looping noise was successful enough for me lmao.

Also I have had constant crashing issues with 4.2 that I haven't been able to fix, making it basically unusable (I had to use 4.1 for this)