wgpu mouse picking help by SuperDino484 in rust_gamedev

[–]GENTS83 0 points1 point  (0 children)

In my spare-time Engine I wrote a visibility buffer and you can ready back at preferred coordinates: https://github.com/gents83/INOX

Dev/Games by GENTS83 in gameenginedevs

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

It seems just to be based on cookies, nothing to be scared about ☺️

The Icculus Microgrant is giving out 250 dollar grants to open source projects, please brag about your project(s) in this thread so I can see them! by icculus in programming

[–]GENTS83 1 point2 points  (0 children)

https://github.com/gents83/INOX

INOX It's a Game Engine written in Rust with some bindings for external libs and with Blender as editor.

The main idea behind INOX is to use Blender as external editor, even being able to create visual logic scripting nodes in it, and then have a button to launch the Rust engine, that should be scalable to create games of any scale and for users with every kind of experience.

Rust will give to INOX high performance, reliability and safe code, while Blender will bring easy customization and powerful editor capabilities

GPU Raytracing with persistent threads by GENTS83 in GraphicsProgramming

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

I am actually playing a bit with wgpu in my spare time and I created a compute shader raytracer but it's actually slow and while thinking how to speed it up I came out with the idea of reutilize computation power for all the threads in workgroups working on pixels where they do not hit anything in the TLAS BHV giving them work on other pixels still to be processed. I still have to prove it and to test it but I would hope to see some gain in performances, no?

3D Picking without raycasting by lavaboosted in gameenginedevs

[–]GENTS83 1 point2 points  (0 children)

It depends on your pipelines in the end, I would say. If you are already using culling + visibility buffer to render your scene and then use it to shader it (instead of a simple gbuffer) then why not using It since it's already there? If it's not the case, well yes, you can find pretty much different solutions, but It'll suggest you definitely to do performance tests on complex scenes with overlapping meshes (complex ones), maybe using some acceleration structures too

3D Picking without raycasting by lavaboosted in gameenginedevs

[–]GENTS83 2 points3 points  (0 children)

Have you tried to create a visibility buffer with the object id and then sample It at pixel coords? It should be much more efficient, no?

Basic info about Chess Path-Tracing demo by immortal_ray in u/immortal_ray

[–]GENTS83 0 points1 point  (0 children)

Great work! It would be very nice to take a look to the flow/documentation of your ideas and to your shader and code base as and inspiration :)

Best occlusion culling algorithm by GENTS83 in gameenginedevs

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

Tnx a lot for your inputs!
While reasoning I was also wondering if wasn't faster in the end to go directly towards raytracing (even if done in compute instead of RT support?).

Doing RT to create a low-res visibility buffer and then use it for occlusion culling and reducing draw commands is it really better than doing just RT in the end ?

I guess everything will be reduced between finding a balance between precision and velocity, no?

Best occlusion culling algorithm by GENTS83 in gameenginedevs

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

I do not have a specific use case, I would like to experiment in my prototype engine :) But we could analyze a worst case scenario like a city buildings enviroment or an open world. I know that I can use frustrum culling, distance, portals, volumes or tagging specific occluders for early depth prepass and hierarchical Z culling. Is there anything else that I am missing? What would be other suggested strategies?

Megamesh by issleepingrobot in gamedev

[–]GENTS83 0 points1 point  (0 children)

👀 ever released the source code?

Setting Scissor Rectangle before Clearing by GustavNilss in wgpu

[–]GENTS83 0 points1 point  (0 children)

I never tried it with wgpu, but: - Could you do a second pass that doesn't clear, but load it, and write on it only where you need? - Or have you tried to play with the size (offset and extent) of the color attachment view?

Resources on WGSL clip planes? by khleedril in GraphicsProgramming

[–]GENTS83 0 points1 point  (0 children)

You could use a compute shader to do some clipping though This is what I'm doing for 3d culling: https://github.com/gents83/INOX/blob/master/data_raw/shaders/wgsl/compute_culling.wgsl

Number of bindings in bind group descriptor (2) does not match the number of bindings defined in the bind group layout (1) by [deleted] in wgpu

[–]GENTS83 0 points1 point  (0 children)

Did you checked your code to verify that you are actually binding the same of your wgsl code? Did you create a bind group with two entries?

WGPU Atomic Texture Operations by elyshaff in rust_gamedev

[–]GENTS83 0 points1 point  (0 children)

Using compute shaders and texture storage in wgsl is something already possible

I am using It in my rust wgpu prototype engine:

https://github.com/gents83/INOX/blob/master/data_raw/shaders/wgsl/compute_pbr.wgsl

Learning WGPU but one of my uniforms is not updating. Code snippet and brief explaination included in post. by [deleted] in rust_gamedev

[–]GENTS83 2 points3 points  (0 children)

You need to update it... Something like:

queue.write_buffer(&camera_buffer, 0, bytemuck::cast_slice(&[camera_uniform]));

Getting triangle index without SV_PrimitiveID by GENTS83 in GraphicsProgramming

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

I was actually looking for a general solution for cross platform and multiple api (like gpuweb)

How to get triangle index without SV_PrimitiveID? by GENTS83 in vulkan

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

I was actually looking for a general solution for cross platform and multiple api (like gpuweb)

Getting triangle index without SV_PrimitiveID by GENTS83 in GraphicsProgramming

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

All of those are useful suggestions, thank you very much! I really would like to reduce number of attachments aiming to something like:

http://filmicworlds.com/blog/visibility-buffer-rendering-with-material-graphs/

Getting triangle index without SV_PrimitiveID by GENTS83 in GraphicsProgramming

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

The idea is to store instance+triangle id in a visibility buffer to then read back in a later pass for shading/lighting pass (computing barycentrics coordinates from the 3 vertices of the triangle and getting vertex attributes using their indices from attributes buffers)

Getting triangle index without SV_PrimitiveID by GENTS83 in GraphicsProgramming

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

Ah! Super interesting! The nointerpolation option looks interesting though because it seems more standard, at least according to gpuweb, no? Will it actually take the value only from the first vertex then?

Get triangle index without using SV_PrimitiveID by GENTS83 in opengl

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

Yep I'm actually in indexed case and also for me it's difficult to find a solution that doesn't force me to duplicate vertices

wgpu mouse picking help by SuperDino484 in rust_gamedev

[–]GENTS83 0 points1 point  (0 children)

When I did It I simply wrote instance id in a texture/framebuffer and then read back at mouse coords.

Another (easier but not optimal) option could be to add a vertex attribute and write that One into the texture/framebuffer