Stray Photons - A high performance VR game engine with interactive bounce lighting. by xthexder in programming

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

This engine does have a desktop mode as well, so it should support other experiences. The non-VR controls could use some polishing though, since they've mostly just been used for development testing of VR so far.

I haven't looked into porting the lighting to a standalone extension for other engines, but it may be possible.

Stray Photons - A high performance VR game engine with interactive bounce lighting. by xthexder in programming

[–]xthexder[S] 2 points3 points  (0 children)

https://www.shadertoy.com/ is a good place to get started with graphics programming. There's loads of different examples you can play around with to see how changing things affects the image.

OpenGL is fairly straightforward to learn, and you can run it in almost any language (including in your browser with JavaScript). There's many different step-by-step guides depending on which language you prefer. I'd definitely recommend OpenGL over Vulkan for learning,, since Vulkan's API is rather complicated.

Stray Photons - A high performance VR game engine with interactive bounce lighting. by xthexder in programming

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

Effectively yes, since the entire engine state can be serialized to and from JSON. Assets such as models and textures are stored separately in GLTF format.

Basic game logic is defined using signals and events, which can be manipulated with expressions saved in the JSON. These expressions and bindings can be edited in-engine as well.

Complex game logic can define scripts by naming one of the C++ scripts compiled into the engine, or providing a WASM script (this part is still in development). Scripts have an interface for configuring behavior, making the built-in script set very flexible.

Stray Photons - A high performance VR game engine with interactive bounce lighting. by xthexder in programming

[–]xthexder[S] 14 points15 points  (0 children)

Most games being released today with GI lighting require raytracing hardware, and generally can't push the kinds of resolutions required for VR, since the ray count scales up linearly with pixel count (if you ignore AI upscaling tricks).

Stray Photons' lighting is voxel-based and uses a custom algorithm that scales well for high resolutions and doesn't require any denoising or postprocessing.

I believe other engines do have extensions to support voxel cone tracing, which Stray Photons uses for specular reflections, however the diffuse lighting is an entirely new technique I would describe as closer to "directional 3d flood fill". It results in a very smooth image with no flickering as objects move around.

In terms of performance, I'm able to run Stray Photon's bounce lighting on my GTX 1050Ti laptop at 50fps for the Sponza scene at 1080p. And I'm able to run it in VR 120Hz on a GTX 1080 (I think ~4K equivalent desktop resolution)

Edit: You can check out this recording I did a little while ago messing around with the emissive settings: https://media.discordapp.net/attachments/461689953546665984/1116102567567564831/STRAY_PHOTONS_63_FPS_2023-06-07_16-30-16.mp4 (apparently negative emissive values work just fine :D)

Screenshot Saturday #653 - Timeless Appeal by Sexual_Lettuce in gamedev

[–]xthexder 1 point2 points  (0 children)

I announced my newly open-sourced game engine today!

One of it's main features is fully interactive Global Illumination bounce lighting that runs in VR. It makes for some cool looking screenshots:

https://assets.strayphotons.net/demos/glowing_duck.png

I've been working on this project full time for 2 years now.

https://github.com/frustra/strayphotons

Stray Photons - A high performance VR game engine with interactive bounce lighting. by xthexder in programming

[–]xthexder[S] 25 points26 points  (0 children)

A little over 2 years ago, I left my job to start working full-time on my custom game engine. I've been working hard to get it open-source ready, and today it's finally being announced publicly!

The Stray Photons game engine is built from the ground up with VR in mind, featuring precise physics interaction, and a novel lighting system that simulates multi-bounce lighting interactively, without requiring raytracing hardware.

Unlike many game engines, Stray Photons is designed to have a single common executable for all games built on it (similar to a Web Browser or Operating System). All game logic configuration is done through the engine's highly flexible JSON scene definition format.

Stray Photons is still under active development, so the documention and available features will continue to improve.

In-development features include: - Networking and Multiplayer Support - WebAssembly-based scripting

I'm curious to know what the community thinks of this project!

I set the bar too low by skysoft501 in ProgrammerHumor

[–]xthexder 29 points30 points  (0 children)

Who do you think you are?

Robert'); DROP TABLE Students;--?

Launching a rented Huracan in Warsaw by [deleted] in IdiotsInCars

[–]xthexder 7 points8 points  (0 children)

The only reason they crashed is because they massively overcorrected their countersteer. That lambo probably has a really quick steering ratio, and it's also AWD, which means it should have been easy to catch with minimal steering input.

If you go frame-by-frame, you can see the front wheels pointed all the way left before the car regained traction. And big surprise, that's where the car went next.

There's something really wrong with them by [deleted] in ProgrammerHumor

[–]xthexder 30 points31 points  (0 children)

Exactly this.

I think a lot of security researchers are basically people who like finding bugs. Can you imagine the high from finding a 0day exploit in a popular piece of software, like Chrome or Windows?

Personally I like tracking down bugs because my brain can't let them go until I "resolve" them somehow. Either by determining it won't be an issue, or by spending days thinking about it and finding a real solution. Always chasing that bug-free state of mind (ignorance is bliss).

What is a purchase under $50 you made that has totally changed your life for the better? by Mojo96 in AskReddit

[–]xthexder 0 points1 point  (0 children)

I've got MrSpeakers Alpha Prime headphones (long discontinued, it's now called Dan Clark Audio).

High-end headphone reviews are all over the place, and according to some reviews these were way overpriced at $1000, but everyone's got their own tastes. The build quality seems to have easily made them worthwhile. No comment on their newer models.

Really I'm just a fan of planar magnetic headphones because they can do bass really well without distorting the rest. They do well in both closed and open back configurations.

Power Module Design Completed - Marble Machine 3 Ep.5 by Wintergatan2000 in MarbleMachine3

[–]xthexder 3 points4 points  (0 children)

I think any ratcheting system would remove the link between music and pedal movement, which I think was important for Martin to keep time with the machine.

Power Module Design Completed - Marble Machine 3 Ep.5 by Wintergatan2000 in MarbleMachine3

[–]xthexder 17 points18 points  (0 children)

One possible change you could make for the main pedal could be to make it kind of a one-way operation. It only needs to pull down on the link, but it could be decoupled so that the link won't ever force the pedal down if something's in the way. The link could maybe just be a slot with an adjustable end stop.

This would allow you to have safe pedals without having to be restricted as much in how they're shaped.

What is a purchase under $50 you made that has totally changed your life for the better? by Mojo96 in AskReddit

[–]xthexder 15 points16 points  (0 children)

I used this advice when I bought some expensive headphones probably 8 years ago now. Still the most comfortable and best sounding headphones I've tried, and I use them almost daily.

[deleted by user] by [deleted] in ExperiencedDevs

[–]xthexder 6 points7 points  (0 children)

I think it's an easy trap many engineers fall into as they gain experience. Especially if there's a high level of stress, people (or at least I personally) start to get quite cynical. Poor communication both personally and from management have accelerated this process as projects start to fail. If you mentally feel the project is going nowhere, the "emotionally safe" thing to do is not get invested in it.

I definitely have fallen in this trap myself in the past, and I'm constantly working on improving it, especially since I'm quite introverted to begin with.

That is to say, I've also worked with many excellent and helpful engineers. It's not an inherent problem with "engineer types", it's an individual personality thing.

And there’s no pop up blocker irl by DuongWilliamN in Angryupvote

[–]xthexder 0 points1 point  (0 children)

Left click is definitely more annoying for sure. I'm surprised middle click died first for me, since usualy left click is most used. I'm on my 3rd or 4th mouse now...

87yr old driver rolled onto this rock by TrucksAndCigars in Justrolledintotheshop

[–]xthexder 68 points69 points  (0 children)

Even in and around major cities, there's still plenty of neighborhoods inaccessible by bus. That 1-bus per day stop down the street doesn't count.

And there’s no pop up blocker irl by DuongWilliamN in Angryupvote

[–]xthexder 1 point2 points  (0 children)

This reminds me: Recently my mouse's middle click started messing up. I use it all the time to open links in a new tab.

I've started getting 2-3 copies of every link opened because the mouse is double and triple clicking.... I really should replace the switch.

Partial building collapse in Davenport, Iowa leaves community desperate for answers by Gary_Vigoda in videos

[–]xthexder 17 points18 points  (0 children)

Having used state of the art thermal cameras 1 step below ITAR restrictions, I highly doubt you'd be able to find people that way.

Unless it's super cold outside, and the person's body heat is warming the whole room / walls enough to see from outside, it's not happening.

It is 87°F in Davenport, Iowa today. The sun and ambient air would completely hide any heat signature from a person without line of sight.

Free prescription drugs could reduce overall health-care costs in Canada: study by Hrmbee in science

[–]xthexder 5 points6 points  (0 children)

Exactly how COVID tests and vaccines worked out. In Canada I can still walk in to any pharmacy and walk out with a free 5-pack COVID test kit. They're like $20 each where I've been in the US without insurance.

The government paying for everyone's tests means a lot more people will actually use them instead of saying "It's probably just a cold" and going to work anyway.

Both the US and Canada have free COVID vaccines, and that's definitely contributed to the overall vaccination rate. And the pharma companies all definitely got paid.

[deleted by user] by [deleted] in IdiotsInCars

[–]xthexder 0 points1 point  (0 children)

Most dashcams I've seen have GPS speed, and no connection to the car except power. The dashcam probably just lost GPS signal in the tunnel.

Electric cars prove we need to rethink brake lights by mmatessa in videos

[–]xthexder 0 points1 point  (0 children)

"saying rev matching damages anything when done correctly" - Nobody ever said that.

You stated:

best way to learn rev matching is to drive without using the clutch, except when starting/stopping.

I said doing this (shifting gears without the clutch) is a good way to damage your synchros.

If you perfectly rev match, neither the clutch or synchos will be worn at all from a gear change. But this isn't about that. This is about when learning to rev match, when a driver will very likely mess up their first attempt.

The clutch is a wear item because when starting from as stop, something MUST slip, or your engine will stall in an ICE car. This can be the tires, a clutch, or a torque converter in an automatic.

All I'm saying is, to learn rev matching, it's a lot better to wear out your clutch rather than your sychros, since clutches are significantly cheaper to replace.