Jump to content

  • Log In with Google      Sign In   
  • Create Account

Trying to make an object glow


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
6 replies to this topic

#1 Nairou   Members   -  Reputation: 418

Like
0Likes
Like

Posted 11 February 2012 - 06:05 PM

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.

Sponsor:

#2 johnchapman   Members   -  Reputation: 541

Like
1Likes
Like

Posted 12 February 2012 - 03:32 AM

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.

#3 slicer4ever   Crossbones+   -  Reputation: 3887

Like
1Likes
Like

Posted 12 February 2012 - 05:57 AM

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.

#4 Nairou   Members   -  Reputation: 418

Like
0Likes
Like

Posted 12 February 2012 - 10:46 AM

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.

#5 johnchapman   Members   -  Reputation: 541

Like
1Likes
Like

Posted 12 February 2012 - 02:39 PM

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.

#6 slicer4ever   Crossbones+   -  Reputation: 3887

Like
0Likes
Like

Posted 12 February 2012 - 04:01 PM

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.

#7 Ashaman73   Crossbones+   -  Reputation: 7480

Like
0Likes
Like

Posted 13 February 2012 - 02:43 AM

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.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS