27,747 reputation
35290
bio website reedbeta.com
location Milpitas, CA
age 29
visits member for 3 years, 9 months
seen Jun 28 at 0:37

I'm a graphics programmer, an amateur physicist, and a sci-fi nerd. I teach computers how to make pretty pictures. I'm excited by beautiful, immersive, story-driven games and interactive fiction. I enjoy messing around with esoteric ideas. I like explaining things.

I currently work for NVIDIA DevTech. Previously, I worked for Sucker Punch Productions on the Infamous series of games for PS3 and PS4.

reedbeta.com - developer blog, OpenGL demos, and other projects. @reedbeta on Twitter.


Jun
27
comment What does multisampling skip or improve? (so it can be faster than supersampling)
@BrainSlugs83 Yes, GPUs these days often use simple lossless compression formats for render targets, especially MSAA ones. It's done in hardware and is transparent to applications. Saves a ton of memory bandwidth. (Note this is a totally different thing from DXT/BC texture compression, which is lossy and precompressed offline. But that also does store the data compressed in video memory; it's decompressed in hardware when the texture is sampled. Again, saves a ton of bandwidth.) Source: I work at NVIDIA.
Jun
17
comment Simulating water droplets on a window
@MaximKamalov Done. (Until the next time AMD decides to reorganize their website...)
May
30
comment Deferred shading - how to combine multiple lights?
@PsychoDad That's the domain of shadows, which is...a more complicated topic. :)
May
29
comment Deferred shading - how to combine multiple lights?
@woojoo666 Aha, sounds like you solved it on your own. Yes, you have to lay down depth in an opaque pass before you can use any sort of blending. It can be a z-prepass with color writes disabled, or another common way is to do ambient/directional light in a first pass with no blending, then add point/spot lights in later passes with blending.
May
27
comment Deferred shading - how to combine multiple lights?
@woojoo666 No. In fact it should be enabled with the depth test set to less-equal, so that surfaces that precisely match the previous pass will go through. If the depth test is off, then surfaces will incorrectly accumulate light from whatever's behind them. :)
Apr
12
comment Optimize state changes within a render queue
@cubrman Yeah, changing techniques or passes within an effect file does change the shaders. Anytime you switch to a different individual vertex or pixel shader program, that's changing shaders.
Apr
11
comment Optimize state changes within a render queue
@cubrman I wouldn't say that. Updating shader parameters is one of the most lightweight state changes, so I wouldn't worry about it too much. You can still minimize the expensive state changes (switching shaders, switching render targets) by grouping your objects by shader. And you can avoid switching textures, vertex buffers etc. (medium expensive) by grouping your objects further by material and mesh, within the grouping by shader.
Apr
11
comment Optimize state changes within a render queue
@cubrman If using the effect framework, IIRC you need to call Apply each time you change parameter values.
Oct
7
comment Deferred rendering and gaussian blur - artifacts
I'm confused by your description of your render passes. Is fbo2 the temporary texture that you render to during the blur? Do you have multiple temporary textures, each with its own fbo? Or are you attempting to re-use the same temporary texture / fbo for multiple passes (which won't generally work, and could explain the artifacts)?
Sep
15
comment Ambient occlusion: Correct culling after anisotropy correction
Also, I saw you cross-posted this to Stack Overflow. That's frowned upon - you should pick the site best suited to the question (which is this one) and post it only there.
Sep
15
comment Ambient occlusion: Correct culling after anisotropy correction
What is "the anisotropy correction"?
Aug
28
comment How does Texture2D.GetData return coloured pixels?
Try i*width + j
Aug
23
comment How can I use the graphics pipeline to render volumetric data based on a density function?
@danijar Yes, it has a slight advantage over using a quad because some pixels along the diagonal will be shaded twice if you use a full-screen quad. On the other hand, discarding off-screen pixels is free since the rasterizer will not generate those pixels to begin with.
Aug
21
comment CSM DX11 issues
@KaiserJohaan I don't think that's quite right. The last row should have +0.5 for both X and Y, and zero for Z.
Aug
20
comment CSM DX11 issues
@KaiserJohaan If you mean converting the post-projective XY coordinates [-1, 1] to UV coordinates [0, 1], that's still needed. The Y axis needs to be flipped though, and the Z axis shouldn't be touched since it should already be in [0, 1] from the corrected projection matrix.
Aug
20
comment Compute directional light frustum from view furstum points and light direction
"How do i transform this new AABB back to world space?" Why do you need to transform it back to world space? The AABB in light space is the frustum for the directional light, i.e. the region that will be visible when you render the shadow map.
Aug
20
comment Find normal based on rotation?
You'll need to convert the XYZ rotation (Euler angles) to a quaternion or matrix, and apply it to (0, 0, 1) to convert that from local to world space. You can find plenty of information on converting Euler angles to other forms of rotation, and applying rotations to vectors, with a bit of googling.
Aug
18
comment How can I simulate shattering glass?
@karlphillip I did work on a demo using PhysX Destruction, though I personally only did rendering stuff, not any physics stuff on that project. The PhysX tech works by generating pre-shattered pieces in a DCC tool, and swapping them in for the unbroken mesh when damage occurs.
Aug
17
comment How are entity systems cache-efficient?
It would be useful to define (or link to) what you mean by ECS, if you're going to compare/contrast it with general component-based design. I for one am not clear on what the distinction is. :)
Aug
5
comment How do games handle rendering Asian unicode text?
@HaydnV.Harach Yeah, inputting text is a problem. For chat it might work to limit things to the 1000 most common Chinese characters, or something like that; you'd have to ask someone who knows more about these languages to see if that would be viable. For the player's name, you could maybe render it with FreeType once and cache the bitmap to use as an extra "character" in your renderer.