Trying to make an object glow

Started by
5 comments, last by Ashaman73 12 years, 2 months ago
I'm attempting to make an object appear to glow, using my deferred shading renderer. The object has a light source at its origin, casting a light on the object's surroundings. However because the light is inside the object, the light doesn't illuminate the object's outer surface at all, so I'm having to resort to tricks.

As an experiment, I tried adding a flag to the diffuse texture in the G-buffer to indicate whether the object is glowing. The lighting shader then renders all pixels with that flag at full light, ignoring lighting calculations.

This somewhat works. The object is fully lit, however it is now subject to artifacts from neighboring light volumes. Normally a light's attenuation ensures that the edges of the light volume are not visible. But now, if one of those edges overlaps an object marked as glowing, the edge is drawn fully lit, bathing half of the overlapped object in a solid shade of the neighboring light's color.

I'm sure there is a better way to make an object appear to glow, within a deferred shading renderer. Any other ideas or references would be appreciated.
Advertisement
One way to do it would be to mark your 'glowing' materials in the g-buffer (as you're doing), then copying the diffuse colour of the marked pixels from the g-buffer into the final buffer after the lighting results have been accumulated.
if the lights in the center of the object, why not just flip all your normals?
Check out https://www.facebook.com/LiquidGames for some great games made by me on the Playstation Mobile market.

One way to do it would be to mark your 'glowing' materials in the g-buffer (as you're doing), then copying the diffuse colour of the marked pixels from the g-buffer into the final buffer after the lighting results have been accumulated.

Good idea, I'll give that a try, thanks!


if the lights in the center of the object, why not just flip all your normals?

Also a good idea, which I hadn't considered, thanks!


Ultimately though, what I'm currently doing is a temporary hack more than a final solution. I would ultimately like to find a way to have the object glow, but still receive color from other nearby glowing objects. Like it glows a particular color, but you see traces of another color on one side from another object nearby. That is the final result I want, but I don't yet have any idea how to get there.

Ultimately though, what I'm currently doing is a temporary hack more than a final solution. I would ultimately like to find a way to have the object glow, but still receive color from other nearby glowing objects. Like it glows a particular color, but you see traces of another color on one side from another object nearby. That is the final result I want, but I don't yet have any idea how to get there.


Actually you could do as I said before but copy emissive pixels into the lighting results buffer before the lighting stage and accumulate light contributions on top of the emissive pixels. This could be problematic if you're using a light at the centre of the object, though; since that light is simulating (cheating) the light being emitted at the surface of the glowing object, it shouldn't affect the object itself. You could account for this by adjusting the emissive material by pre-subtracting the light source's colour from the emissive material's diffuse colour. This isn't all that flexible, though.

I'm not sure I understand what you're trying to achieve; is it a very subtle, stylized glow or an emissive material? In the latter case I think that you can safely ignore contributions from other light sources.
may i suggest finding a source which demonstrates what you fully want to achieve, I think you will receive better feedback if we can see what it is that you would like to achieve.
Check out https://www.facebook.com/LiquidGames for some great games made by me on the Playstation Mobile market.
You need to differentiate between glowing(emissive) materials and light sources. A light source illuminates surrounding surfaces which are faced towards the source. A glowing or emissive material is just an other parameter to your light calculation:
final_light = sum_of(diffuse_lights) + sum_of(specular_lights) + emissive_light
In combination with a bloom effect you get a nice glow effect for these kind of surfaces.

When you need a glowing light source, you need to combine both effects. First, the light emitting parts of your model need a emissive material surface. Secondly you need to place a light , not necessarily inside the model, but atleast close to the emitting surface. Placing it outside the surface sometimes help to light the none glowing model parts like a handle etc.

This topic is closed to new replies.

Advertisement