47 votes
Accepted

Physically based shading - ambient/indirect lighting

Real-time graphics deploys a variety of approximations to deal with the computational expense of simulating indirect lighting, trading off between runtime performance and lighting fidelity. This is an ...
user avatar
  • 23.7k
16 votes
Accepted

Is doing multiple Gaussian blurs the same as doing one larger blur?

If I did two Gaussian blurs of size N, would that be the same mathematically as doing one Gaussian blur of size 2N? Almost. Applying two Gaussian blurs is equivalent to doing one Gaussian blur, but ...
user avatar
16 votes
Accepted

Why do multiple Gaussian Blurs?

There are two cases I can think of where multiple blurs would be performed in succession on a single image. First, when performing a large-radius blur, it may reduce the total computation if you ...
user avatar
  • 23.7k
11 votes
Accepted

Does prerendering actually help performance?

As far as I know, this sort of thing is mainly about shader compilation. One of the main reasons why a game may experience hitches the first time something renders is that the shaders necessary to ...
user avatar
  • 23.7k
10 votes

What are the current open problems in Computer Graphics?

There is a vast amount of open problems in real-time graphics: shadows, aliasing, reflections, global illumination, transparencies (blending order and lighting) etc. SIGGRAPH annually hosts a course ...
user avatar
8 votes
Accepted

How is motion blur implemented in modern realtime renderers?

There are several techniques used. A simple, but limited, post-process approach that is not really used any more consists in reconstructing the world space position of a pixel using both the view ...
user avatar
  • 2,468
8 votes
Accepted

Does PBR incur a performance penalty by design?

As mentioned in this answer, Physically-Based Rendering isn't a set number of things. It's a concept. It's akin to saying something is 'Environmentally Friendly'. There are many different techniques ...
user avatar
  • 3,552
8 votes
Accepted

How to reduce the number of draw calls when rendering one object multiple times?

There are many, many ways to draw things in OpenGL, so this is naturally confusing sometimes. The first method you describe, setting the shader parameters and issuing one draw call per object is ...
user avatar
  • 1,389
8 votes
Accepted

Subsurface Scattering Without Rays?

There are lots of ways to fake SSS with greater or lesser fidelity. A few recent-ish methods: Screen-space blurring of object lighting (described in detail here) Using “interior” ambient-occlusion ...
user avatar
7 votes
Accepted

How does vsync affect fps exactly when not at full vsync fps?

The short answer is It's Complicated™. :) A lot of factors can affect frame timing (and the associated problem of animation juddering, due to the game's animation delta-times not matching actual frame ...
user avatar
  • 23.7k
7 votes
Accepted

Projected grid water horizon detail

I believe a common solution is to split the camera transform used to project the grid from the camera transform that is used to render the grid. At perspectives close to top-down, the two cameras ...
user avatar
7 votes

How does state of the art real time hair rendering work?

Sorry for the bad quality of my answer. I do not have access to a computer currently and editing from my phone is not a straightforward task. In particular I would love to be able to paste images. ...
user avatar
  • 1,689
7 votes
Accepted

What is "Object Space Lighting"?

According to the Star Swarm developers this helps them with LOD and enables greater shading scaling. Based on this I guess its simply texture space lighting. Because we do what we’re calling object ...
user avatar
7 votes
Accepted

Confused about prefiltering environment maps (Manson 16)

Your first quote is referring to "Split-sum approximation" presented in "Real Shading in Unreal Engine 4" by Brian Karis, and also referred in the paper [Kar13]: $$\frac{1}{N}\sum_{k=1}^N \frac{L_i(...
user avatar
  • 3,566
6 votes
Accepted

How to improve on bilateral upsampling in real time scenarios

Nearest-depth filtering is an alternative to bilaterial filtering that was specifically developed for upsampling low-resolution transparent rendering. It's a bit simpler than bilateral sampling, in ...
user avatar
  • 556
6 votes
Accepted

Real-time translucency effect

I think you may want to take another look at the iOS user interface if you consider real-time blurs to be out of range of mobile hardware: Blurs are totally in range of mobile hardware. Yes, you need ...
user avatar
6 votes

How does vsync affect fps exactly when not at full vsync fps?

It depends on how a missed frame is handled by the driver. One option is to just wait until the next vsync, causing a hitch of 32 ms and if the application is just at the limit of 16 ms can cause ...
user avatar
6 votes

How to implement a realtime 2D light renderer with fog/colored light on the GPU?

If your wall geometry is vector graphics you can simply extrude the segment away from the light position. This means 2 triangles per draw call, all the extrusion offsets can can be handled in the ...
user avatar
  • 8,169
6 votes

Projected grid water horizon detail

You can be both realistical and real-time. the secret is to change representation each time the information get under the Shannon-Nyquist (i.e. grid) scale: from geometry to normal maps to shading ...
user avatar
6 votes

How to create a patterned object with variable pattern density in real-time?

In order to ensure that the pattern shapes are always either wholly present or absent, never cut off, it's necessary to ensure that the same p value is used for all ...
user avatar
  • 23.7k
6 votes

Physically based shading - ambient/indirect lighting

This is the main 'hard' problem remaining in real-time CG, and there is a lot of research ongoing into solving it. The biggest hurdle is that in raster graphics, each component of the scene is ...
user avatar
  • 2,302
5 votes

What are the current open problems in Computer Graphics?

Computer Graphics can be divided in multiple subdomains of which I will only talk about physically-based rendering (the one I am the most familiar with and probably the one you are referring to based ...
user avatar
  • 1,024
5 votes
Accepted

How can I create a bounding volume hierarchy for constantly moving objects?

Consider using spatial hashing, especially if your objects are similarly sized. Basically, divide your world into uniformly-sized grid cells (2D and 3D are both valid possibilities depending on the ...
user avatar
5 votes
Accepted

Phong: Real-time rendering of Metal and Plastic Materials

Diffuse colours on materials typically come from within the material, while the specular colour is from the very surface. Coloured plastic materials are made by embedding particles of dye inside a ...
user avatar
  • 6,490
4 votes

How to reduce the number of draw calls when rendering one object multiple times?

In OpenGL ES there is Instancing which provides allows for rendering one object multiple times. When using Instancing, you can use uniform arrays to provide different information, e.g. a ...
user avatar
  • 1,220
4 votes

Is there a way to achieve the look of a distant flock or shoal without full simulation?

I'm not sure if this counts, but you can use fluid dynamics to render large crowds (of birds, people, etc). With SPH (smoothed particle hydrodynamics) to model the "fluid", you aren't really ...
user avatar
  • 1,074
4 votes

Is there a way to achieve the look of a distant flock or shoal without full simulation?

One way that might work is to have boids but render each boid as a group of birds. This way the simulation is still simple but the rendering makes it seem complex. You might even allow a little ...
user avatar
  • 7,351
4 votes

Real-time translucency effect

There's no way around it. If you want the area behind the textboxes to appear blurry... you're gonna have to blur it. One way to mitigate the performance cost is to be sure to use a 2-pass separable ...
user avatar
  • 1,100
4 votes
Accepted

How does directional Gaussian blurring work?

If I understand your question, you are asking how to actually perform said directional blur in code? A Gaussian blur is typically done by sampling your image in all directions around your current ...
user avatar
4 votes

How can I make a graphics demo without a frame buffer?

This is a case where looking at the workings of more retro hardware would be reasonable. Older hardware had strong limitations in both memory and processing power. Your 100+Mhz chip is far faster than ...
user avatar
  • 8,141

Only top scored, non community-wiki answers of a minimum length are eligible