HNHacker News
TopNewBestAskShowJobs

Atrix256

221 karma · joined June 17, 2016

Graphics research at EA SEED. Previously a game/engine/graphics/audio/animation programmer at blizzard, monolith, midway and others. Blog.demofox.org
submissionscomments
Atrix256··on What to learn to be a graphics programmer
(author of the article) 100% agree. As others have said, a good graphics programmer works with tech artists and artists. Frankly, graphics programming is largely a role of service to enable those people to do what they want to do, or help create what they envision. People mentioned Inigo Quilez as an example of a graphics programmer who is also an artist. He is a power house and a unicorn. I personally like playing music / programming audio more, which is a good ground for learning DSP things - useful when for instance, you want to push your rendering noise into the high frequencies, so a low pass filter is more effective at denoising.
Atrix256··on What I wish I knew about ESPP and RSUs sooner
If you sell your rsus when they vest its the same result
Atrix256··on When random numbers are too random: Low discrepancy sequences (2017)
Yeah. Sampling bias is fixed with Cranley Patterson rotation. For real time rendering, blue noise is the thing to use though. At low sample counts you can't converge so you should hide the error perceptually instead.
Atrix256··on When random numbers are too random: Low discrepancy sequences (2017)
This talks about that more deeply and is by the same author (me) :) https://blog.demofox.org/2020/07/26/irrational-numbers/
Atrix256··on Constant time stateless shuffling and grouping
Here's the source. Nathan Reed references a jcgt paper, which references a paper form 2012. https://www.reedbeta.com/blog/hash-functions-for-gpu-renderi...
Atrix256··on Permutation iteration and random access
Game development tends to make code more in this style, half way between C and C++. The reasoning of this is primarily the need to avoid hidden costs in the STL, but to be honest is also just momentum & culture :)
Atrix256··on Permutation iteration and random access
Fixed, woops.
Atrix256··on Inverting Gauss’ Formula
Nice improvement!
Atrix256··on Voltage, Amps, Resistance and LEDs
Plus notice no mistakes were called out. It was just "don't buy parts from amazon".
Atrix256··on Voltage, Amps, Resistance and LEDs
Fixed this typo and i get what you mean how "one is not like the other" in the title.
Atrix256··on Casual Shadertoy Path Tracing 1: Basic Camera, Diffuse, Emissive
Heya ladberg: * Were you doing direct light sampling (next event estimation)? If so that would explain it. It's the most naive path tracing you can imagine, so it's easier to understand. * Or, it might be how shadertoy is vsync limited to 60 fps which means each pixel only gets 60 samples a second, when it could be getting ~64x as much before i see any slowdown.
Atrix256··on Not All Blue Noise Is Created Equal
Demofox is a jerk!
Atrix256··on Compressing Networked State Data
See step 1 of the 3 step bulleted list, but yeah, it generalizes to 2 steps with a shared initialization value.

Maybe worth noting that if your world has some known starting state (eg after map load), it might be worth the client and server using that as the implicit initial state, even when a client joins a game in progress.

Atrix256··on Taking a Stroll Between the Pixels
I hear you. It's hard to know what a good benchmark would be. Do you have any ideas for what you'd like to see measured and possibly what it's compared against?
Atrix256··on Don’t Convert SRGB U8 to Linear U8
Gamma still exists! Check out this really nice article for more info "The rehabilitation of gamma"

https://poynton.ca/PDFs/Rehabilitation_of_gamma.pdf

Atrix256··on Don’t Convert SRGB U8 to Linear U8
you are totally correct. u16 is more than enough (as is u12 apparently!). F16 is also sufficient. I'll update the text to point this out.
Atrix256··on Granular Audio Synthesis
"hair cells in the ear" isn't how hearing works. That's how balance works :/
Atrix256··on Granular Audio Synthesis
Are you trolling us? The ear drum is how you hear...
Atrix256··on Granular Audio Synthesis
Does this source code help you much with that? It only deals with wave files but can read / write 8, 16, 24 or 32 bit wave files, at whatever sample rate, with however many channels.

I really wish someone would make a header only C++ audio library, that would be soooo nice.

Atrix256··on Granular Audio Synthesis
By playing a sound faster I mean changing it's sample rate, without doing anything else.
Atrix256··on Granular Audio Synthesis
I'm the author and didn't make this post on yc, but yes, the implementation is in 680 lines of standalone c++

The point of the article isn't about c++ or why it's a good language for doing this sort of thing, but I'm a real time graphics and game engine programmer, so it's my language of choice.

Atrix256··on Dissecting “Tiny Clouds”
I wonder if the hacker news algorithm looks at the people who make the post to know if it should be promoted or not?

One thing I have noticed is that when you post things, they get a lot more attention than when I do hehe.

Thanks for that (:

Atrix256··on Demystifying Floating Point Precision
Thanks. Probably ought to do that (:
Atrix256··on Demystifying Floating Point Precision
good point. That's interesting!
Atrix256··on Calculating the Distance Between Points in Wrap Around (Toroidal) Space
I'm out of my depth but I believe it's a torus because it's 2 cylinders, not circles?
Atrix256··on Generating Random Numbers from a Specific Distribution by Inverting the CDF
Have another way to explain it that you think is more appropriate?
Atrix256··on SIMD / GPU Friendly Branchless Binary Search
I'm not the one who downvoted you, but I am the one who wrote the article :P
Atrix256··on SIMD / GPU Friendly Branchless Binary Search
You are completely right, I'll mention this in the post (In that case do a branchless comparison based on subtraction or similar?). Fwiw when doing simd, you'd use intrinsics which wouldn't have this issue, but it is a valid point and completely true. Thanks!
Atrix256··on SIMD / GPU Friendly Branchless Binary Search
Here's a godbolt to play with as well, showing how it does actually compile down to being branchless in clang (you can switch it to use other compilers too) https://goo.gl/bywp8b
Atrix256··on SIMD / GPU Friendly Branchless Binary Search
This isn't a parallelized implementation, no. To have that, imagine that instead of a size_t for ret, that it was something like size_t[4], and that each operation you did acted on all 4 items at once (this is how SIMD operations work, they do the same thing to each item in a vector of values).

You would end up returning a size_t[4], which would have the results of your 4 searches in it, which ran in parallel.

Regarding the ternary operator, you can always check your assembly (here's some that shows it https://godbolt.org/g/BM6tfc), but the article also shows how to do it with a multiply instead of the ternary operator.

The biggest thing sticking out of this as being slow would be the cache unfriendliness of binary searching, but the link at the end shows how to clear that up (which is not the point of the article, but the ideas are compatible and combinable).

Page 1 of 2Next →