@BartWronski@mastodon.gamedev.place
@BartWronski@mastodon.gamedev.place avatar

BartWronski

@BartWronski@mastodon.gamedev.place

Principal Research Scientist at NVIDIA.

Technology and art.
Computer Graphics by day, Techno and Industrial music by night.

https://linktr.ee/bartwronski

Ex Google Research, Ex games (Sony, Ubisoft, CD Projekt).
Politically leftist. He/they.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

jbikker, to random
@jbikker@mastodon.gamedev.place avatar

https://carette.xyz/posts/state_of_vulkan_2024/

TL;DR: Too hard to learn; many people stick with OpenGL. In the meantime, a colleague at my university asked if it would be safe to basically switch to path tracing altogether for year 2 courses next year, using the APIs to render 2 tris essentially...

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@dotstdy @jbikker @gob My personal opinion: those "low level features" are often not even how any single real GPU works. Vulkan abstracts the driver for many architectures, not hardware.
I always advocate for using WebGL/OGL/DX11/frameworks/shadertoy/even engines for education, and I get criticized for it. :)

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@lisyarus @dotstdy @jbikker @gob Seeing my first triangle and then a box on screen was such a huge joy and motivation to keep learning graphics. I have a short attention span, and if I had to either copy a few thousand line code blob that I don't understand or spend a few weeks on concepts that were "not yet" relevant for me and I could not conceptualize, it would probably demotivate me and cause me to lose my attention/interest...

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@lisyarus @dotstdy @jbikker @gob and I don't have a problem with the "bottom-up" approach either. But in this framework, one could start with making one's own GPU-like software/hardware (fun!), blitting pixels or lines, and working up. Or "top-down," starting with a high level and filling the gaps. Starting from the middle feels bizarre...

BartWronski, to random
@BartWronski@mastodon.gamedev.place avatar

We have recorded a 48min version of the presentation for our paper "Filtering After Shading with Stochastic Texture Filtering":
https://www.youtube.com/watch?v=e3391_C6aXE

Properly paced, going deeper into history, context, gamedev practices, and explaining recommendations - check it out! :)
Project page:
https://research.nvidia.com/labs/rtr/publication/pharr2024stochtex/

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

In our original 20min slides, we didn't have enough time to explain aliasing from non-linearities properly and why it's more apparent if done before magnification. This was not clear and confused some folks, so we fixed it. Here is a relevant timestamp: https://youtu.be/e3391_C6aXE?t=1812

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@ArthurBrussee thank you! :) we spent a lot of time trying to make our points clear and connect them to trends and practices, as the core idea might seem either trivial/obvious (many precedents) and not worth publishing, or preposterous - depending on the context and reader's/listener's experience. 😅

ninepoints, to random
@ninepoints@mastodon.gamedev.place avatar

I wrote a post I could link/refer folks to that periodically ask me "how to get into computer graphics": https://www.jeremyong.com/graphics/2024/05/19/getting-started-in-computer-graphics/

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@ninepoints thanks for the post! Will read it in detail today, but it's super awesome you do it. :)
I get this question asked super often, so I will have a nice starting link to point folks to—even if I already see I'd disagree with some advice. :) (I probably would suggest WebGL as a total starting point and then DX11—but on the latter, I am probably alone.) My reasoning: starting with high-level graphics concepts: buffers, transitions, etc., are distracting and platform-specific.

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@ninepoints my disagreement doesn't come from usefulness of something or not. :) Some graphics programmers will never touch a BRDF, some will never touch an API buffer - sure.
But my core disagreement comes from the "education" part. 1. Concepts should be introduced gradually and the incremental introductions should be possible to try out and "exercise" immediately. 2. Early on, one should get a big picture and shared basics first and be able to play with it.

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@ninepoints of course there are many experts who do only this kind of work and this is super valuable and still 100% graphics programming. :)
I don't know the percentages, but it's not relevant to my point - rather, do you think it's possible to get started with complex abstract APIs and 1000 lines for a single triange before understanding the GPU pipeline, what those buffers mean etc? It's just very hard to teach gradually/incrementally, IMO.

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@ninepoints I think low level API programming is something best learned on the job and on real workloads/platforms - you might disagree, of course.
And btw., OpenGL is not how hardware works, but neither is Vulkan. :) Both are abstraction layers, one higher, the other one lower. My experience with education is to always start with the least amount of concepts and most high level, then fill in the blanks and details. Also starting with shared language/concepts.

bitinn, to gamedev
@bitinn@mastodon.gamedev.place avatar

Can older gamedev share some wisdom on how crunch manifest in the early 90-00s era?

These days crunch feels like a “feature” of game industry:

  • yes, by market cap we are definitely one of the biggest video game companies.

  • but even within it, your choice is to either crunch to meet increasingly difficult deadline;

  • or see your project cancelled in 2-4 years, then either continue on with other big projects or get layoff.

Are the 90s’ crunch different?

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@bitinn It's very company-dependent, I think. I started in 2010, so a bit later, but then there was an expectation of unpaid brutal crunch and "if you don't like it, leave" —80-hour work weeks, abuse, etc. Then, the same company started including partially paid overtime and fully paid overtime. Over the next 8y, every company I went to had an attitude of "we want to avoid it, but it's a necessary evil" with more and more awareness that it's abusive.

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@bitinn Really sorry to hear that. :( Hope it's transient and things will just sort out...
I am out of touch with gamedev post-2018, so no idea if this applies to Western companies as well, but with all the layoffs, maybe partially as well...

BartWronski, to random
@BartWronski@mastodon.gamedev.place avatar

Ugh, I really liked Kind Bars, but they are canceled. :(

https://en.wikipedia.org/wiki/Daniel_Lubetzky

"In May 2024, Lubetzky was one of a group of billionaires and business interests who privately pressured New York City Mayor Eric Adams to deploy police on pro-Palestinian protests at Columbia University"

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

It is so fucking infuriating that the same politicians accuse student protestors of being under the influence of some "agents" while they are under clear and documented influences of interest groups (and literal agents like AIPAC).
AIPAC should be delegalized as foreign agents under the Espionage Act, not TikTok.

Migueldeicaza, to random
@Migueldeicaza@mastodon.social avatar

I am a:
⚪️ man
⚪️ woman
🔘 bear

looking for a:
⚪️ man
⚪️ woman
🔘 1/8 cup of non-toxic glue to add to the sauce to give it more tackiness

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@Migueldeicaza "bear" has some interesting alternative meaning in gay culture. :)

demofox, to random
@demofox@mastodon.gamedev.place avatar

Does anyone know of any code laying around the net that distributes points on a mesh in a blue noise distribution?
A student intern i work with is looking for this. It's tempting to write it, but im also kinda swamped :X

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@demofox haven't tried in practice, so might be suboptimal, but I am pretty sure it would be "correct": I would probably do 3D Mitchel's best candidate on some conservative voxel grid around the mesh, then take only points closer to a surface than some epsilon and project them onto surface (can be done as gather, not scatter). But it depends if you want the blue noise with geodesic distance (surface connectivity) or 3D. For most meshes (convex or locally almost convex), should be ~similar.

aeva, to random
@aeva@mastodon.gamedev.place avatar

I wish there were something to translate video essays into short form blog posts. I imagine the hard part would be extracting good images from the video to supplement the generated text.

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@aeva I use ChatGPT box to summarize YouTube videos, and it works great there. In the age of clickbait and spammy videos, it's my defense to quickly see if a video is worth watching or just 10mins of filler.

I also used OpenAI Whisper to transcribe my own talks, and it also works great (and this one is local, open source, and 100% private).
Then transcription can be fed into ChatGPT for rewriting and summary (have done it as well, but never used it directly, just as a starting point).

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@aeva there are dozens of models for local use, most are very flakey.
I played a bit with different Ollama models + Open WebUI (the easiest to set up, I think) and they were kinda crap compared to paid/subscription ChatGPT. :P But I also admit I didn't try tweaking prompts or too many different models; it definitely works and some quantized models are created specifically for consumer GPUs.

demofox, to random
@demofox@mastodon.gamedev.place avatar

New Blog Post: A Low Discrepancy Shuffle Iterator (+Random Access & Inversion)

What if you had a shuffle iterator that could traverse a shuffle, without actually shuffling.

What if that shuffle was a low discrepancy sequence so neighboring values were very different and had nice numerical properties?

Another POV: selection without replacement. stateless, and low discrepancy.

https://blog.demofox.org/2024/05/19/a-low-discrepancy-shuffle-iterator-random-access-inversion/

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@demofox a neat application of this is possibly for LDS discrete sequence importance sampling; simply N is not the element count, but sum of the element values and then one can do a binary search over the discrete CDF. This could be useful for importance sampling when elements are sorted according to some other diversity metric, like spatial distance or whatever.

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@demofox would Hilbert curve remapping work? I have this snippet from some old article (can't find it now) for converting 1 LDS random number to 2, works not ideal, but pretty ok. Then you can start with just 1D. :)

BartWronski, to random
@BartWronski@mastodon.gamedev.place avatar

I am excited to finally share our recent paper "Filtering After Shading With Stochastic Texture Filtering" (with Matt Pharr, @marcosalvi, and Marcos Fajardo), published at ACM I3D'24 / PACM CGIT, where we won the best paper award! 1/N

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@wadeb @mtothevizzah @iralmeida @aras @demofox 1. there was a paper from my colleagues that does that for both meshes and materials: https://research.nvidia.com/publication/2021-04_appearance-driven-automatic-3d-model-simplification but back then was arguably way too slow. 2. We wrote an article to the new GPU Zen about exactly that for materials :) and it's IMO practical and fast. Uses Slang.D, so no need to rewrite BRDFs in a different language. Should be out in a few weeks, but if you're curious, I'll ask around if I can share a preprint

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@wadeb @mtothevizzah @iralmeida @aras @demofox doing it with vertices is also probably doable today with all the advances in differentiable rasterization, it got fast! This latest branch in particular should be of interest: https://github.com/NVlabs/nvdiffrec/tree/slang not just rewritten in Slang, super fast and clean, but also includes many advances like: https://research.nvidia.com/publication/2023-08_flexible-isosurface-extraction-gradient-based-mesh-optimization

And for Maine, definitely want to come back. Just need to decide when, and train vs road trip vs flying. :)

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@wadeb @mtothevizzah @iralmeida @aras @demofox I am a big fan of this paper, super cool and easy technique. :) I don't know if I would suggest Slang (HLSL compatible) + clean gradients, or their approach (no need to compute gradients manually at all, but they are noisy), as I have not tried it. Probably similar amount of work for integration (setting up multiple passes, IDs etc. vs creating a backwards pass with Slang). Theirs might be easier for one-off, real gradients could pay long term.

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@wadeb @mtothevizzah @iralmeida @aras @demofox if you ever want to add more ML components to the engine and pipelines (like gradients of BRDF flowing to a tiny network or optimizing something else using the BRDF), having real gradients will pay off - just my very biased opinion as I both contributed to Slang.D and work precisely on learning things inside real game-like renderers. :) Also, their approach will not work after a light bounce (suddenly everything contributes to everything).

BartWronski,
@BartWronski@mastodon.gamedev.place avatar

@demofox @wadeb @mtothevizzah @iralmeida @aras it's a really neat and convenient language, IMO. And the ecosystem is great, it can take or output HLSL, CUDA, and you can bind your real proper game shaders to PyTorch (just compute ones, but I doubt this is a problem nowadays). The only possible concern: now HLSL is adding templates, Slang works with generics. The latter might be better (real types, better errors etc), but this can cause divergence in future.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • thenastyranch
  • rosin
  • GTA5RPClips
  • osvaldo12
  • love
  • Youngstown
  • slotface
  • khanakhh
  • everett
  • kavyap
  • mdbf
  • DreamBathrooms
  • ngwrru68w68
  • provamag3
  • magazineikmin
  • InstantRegret
  • normalnudes
  • tacticalgear
  • cubers
  • ethstaker
  • modclub
  • cisconetworking
  • Durango
  • anitta
  • Leos
  • tester
  • JUstTest
  • All magazines