14,131 reputation
12047
bio website reedbeta.com
location Santa Clara, CA
age 27
visits member for 1 year, 9 months
seen 3 hours ago
stats profile views 556

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.


1d
comment How can I debug _why_ glDrawArrays is very slow?
You might try gDEBugger.
1d
comment Moving objects in visual basic6.0 in sinus graphic way
What is a 'sinus graphic way'? I think you have a translation error; can you rephrase?
1d
comment Is this Rotation Matrix correct?
That would be a row-major layout of the correct Z-rotation matrix as shown on Wikipedia, since you're writing down the entries left-to-right then top-to-bottom. To make a column-major layout, just transpose it - write down the entries top-to-bottom then left-to-right.
Jun
15
comment TBN Matrix : Eye vs. World Space Conflict
let us continue this discussion in chat
Jun
15
comment TBN Matrix : Eye vs. World Space Conflict
@NicolBolas Camera space as I understand the term is oriented with the camera, which makes it more difficult to sample world-aligned cubemaps, as you need an extra transformation step.
Jun
15
comment TBN Matrix : Eye vs. World Space Conflict
"if you see a tutorial that suggests you do lighting in world space, stop reading it. Read something written by someone who's not an idiot." A little more nuance, please. Pure world space can give you precision problems when far from the origin, but camera-centered world space is fine and quite useful, e.g. for sampling cubemaps or SH lighting that are defined relative to world space.
Jun
15
comment TBN Matrix : Eye vs. World Space Conflict
"Therefore, if you construct a matrix from these 3 normals, using them as the columns of the matrix, you will have created a matrix that goes from whatever space those normals were in to tangent space." I think you've got it backward - that matrix goes from tangent space to the source space. Consider if you multiply that matrix by (1, 0, 0) - you get the original tangent vector, in the source space. Multiplying by (0, 1, 0) gives you the bitangent and (0, 0, 1) the normal. So it's transforming from tangent space to the original space the vectors were in.
Jun
14
comment Defining lines from a heightmap
Multiplying texCoords.x by (verticesCount-1)/verticesCount at the top should really do the trick, I'd think. What goes wrong for you in that case? Can you post a screenshot of the result?
Jun
12
comment What's the process for making a PS4 game?
You should contact Sony and ask them. But most likely this information simply isn't available yet since the PS4 isn't yet released.
Jun
12
comment Using a switch command in one shader vs multiple shaders
Current GPUs have more like 32-wide or 64-wide SIMD, not just 4-wide. :)
Jun
12
comment What techniques make next gen look so realistic
Yep, I think HDR and physically-based shading are a lot more widespread and better this generation. It's not that those couldn't be done last generation, but that the approximations and hacky tricks are being upgraded to better approximations and less hacky tricks now. :) Plus, we can afford to have more textures, e.g. both specular intensity and gloss maps instead of just one of the two, plus more complex layered materials, etc.
Jun
12
comment Using a switch command in one shader vs multiple shaders
Well, think about this: the switch() has to be evaluated every time the shader runs, i.e. for every pixel drawn. If you keep your shaders separate, there is no extra work per pixel. But don't take my word for it...why not code up both versions and measure the performance?
Jun
10
comment InputLayout handling
See gamedev.stackexchange.com/questions/25384/…
Jun
9
comment Blur Shader strange behaviour
The duplication effect is due to the samples in the blur kernel being spaced too far apart. You need to either decrease the radius of the blur, or add more samples so that you can blur such a large radius smoothly. (Or apply multiple blur passes, or downsample the image before blurring it.)
Jun
9
comment A motion blur technique which can cover curve movement path?
@Eonil Ahh, yeah, that sort of extended trail with multiple shifts of direction is best done with special purpose tricks.
Jun
9
comment A motion blur technique which can cover curve movement path?
@Eonil, can you go into more detail about what you would use this for? Are there specific kinds of objects, or specific types of motion (e.g. circular) that you're interested in?
Jun
7
comment Shadowmapping theory question
@DOOMDUDEMX Yes. DX11-level GPUs support depth cubemaps directly, so you wouldn't even have to choose the cube face yourself; you could just feed in the vector from the light source to the pixel and it will figure out which cube face to use. On older GPUs you might have to do the math yourself.
Jun
7
comment GLSL Multiple Uniform Structs
One thing that comes to mind is that you can pack the floats together with the vec3s to make vec4s. E.g. each light would be a vec4 of (position, radius) and a vec4 of (color, strength). GPUs like uniform data to be aligned on 16-byte (4-float) boundaries.
Jun
7
comment Glowing Effect and Blending
Google for "bloom effect" and you should find plenty of material on this.
Jun
6
comment Mesh objects and a draw function
@FredrikBostonWestman It has to be split into several meshes, one for each material. I think of a "mesh" as being a chunk of triangles you can draw in one call, so it all has the same shader/material. An object may be made of multiple meshes if it has multiple materials, or independently moving parts (e.g. a car and its wheels), etc.