Grass Blocks ( anyway to make them feel more dynamic? )

Started by
15 comments, last by riuthamus 11 years, 1 month ago

Um, let me see if I understand this correctly: do you have the grass be part of the cube mesh? Because if it was a separate mesh you could just remove the grass at a whim and none of this would be an issue...

Don't pay much attention to "the hedgehog" in my nick, it's just because "Sik" was already taken =/ By the way, Sik is pronounced like seek, not like sick.
Advertisement

We got it working, now our issue is having the grass sway.

gallery_1_371_320370.png

I will start another thread for that though, thanks guys!

So we ran into another problem. The lighting system for our world is deferred rendering, but with such a system you can not have alpha's that work right. We got the alphas to work for the grass but to get the lighting to work on them we had to setup a forward lighting process. In doing so our point lights do not effect them. Any ideas on how we could fix this? If we setup point lights to be forward rendered we limit the number of lights. One of the main reasons for using a deferred rendering method is the thousands of lights we can use. ( which makes for a very nice setting ) I would really hate to have to hinder that based off of the idea of grass being lit.

Any unique ideas on how we can bypass this would be GREAT!

So we ran into another problem. The lighting system for our world is deferred rendering, but with such a system you can not have alpha's that work right. We got the alphas to work for the grass but to get the lighting to work on them we had to setup a forward lighting process. In doing so our point lights do not effect them. Any ideas on how we could fix this? If we setup point lights to be forward rendered we limit the number of lights. One of the main reasons for using a deferred rendering method is the thousands of lights we can use. ( which makes for a very nice setting ) I would really hate to have to hinder that based off of the idea of grass being lit.

Any unique ideas on how we can bypass this would be GREAT!

Are you rendering grass fully alpha-blended? This is not how its usually done (from what I know, and I researched this subject a bit). You want to render grass with one of these methods:

There is some good stuff here on this topic: http://wiki.polycount.com/TransparencyMap


Where are we and when are we and who are we?
How many people in how many places at how many times?

We are doing the 3rd one, the issue is not the alpha, rather the issue is that point lights do not affect the grass:

First topic related to alphas:

http://www.gamedev.net/topic/639277-transparent-textures-what-format-to-use-and-how-to-save-it-out/

Which move to this: ( and what we are doing now )

http://www.gamedev.net/topic/639284-transparent-voxels/

And now our issue is the point lights do not work on the grass because the point lights are rendered through our differed rendering system not the front rendering system used for the grass lighting. We cant run our grass rendering through the same lighting as differed because it will negate the use of alphas. So, not sure your answer really hits home as to what can be done to fix that. I do appreciate the links though as it helps to solidify our already established base. The issue is figuring out how to get point lights ( with the differed rendering ) to effect the grass.

[media]

#t=2s[/media]

You can kinda tell with the last bit of the video that the grass is not taking the red light on it, like it should.

Just to make sure I understand: You are rendering the grass completely "forward" and it doesn't appear in the GBuffer anywhere before that?

I can think of two things off the top of my head:

- Simply light the grass "forward". But, as you said, this would mean that you're coupling scene geometry with light complexity again.

- "Cheat" by using the values in the light buffer that are along the bottom edge of the grass quad. This is probably going to be very computationally cheap but will make the quads have constant lighting along the vertical axis. It will also make any grass automatically translucent.

current project: Roa

Just to make sure I understand: You are rendering the grass completely "forward" and it doesn't appear in the GBuffer anywhere before that?

I can think of two things off the top of my head:

- Simply light the grass "forward". But, as you said, this would mean that you're coupling scene geometry with light complexity again.

- "Cheat" by using the values in the light buffer that are along the bottom edge of the grass quad. This is probably going to be very computationally cheap but will make the quads have constant lighting along the vertical axis. It will also make any grass automatically translucent.

Maybe I do not understand but neither of those options sound good! :P here is a video to show you clearly what is going on.

[media]

[/media]

So as you can see the light is being rendered via differed rendering ( the point light that is ) and the grass is being forward rendered. The obvious issue is that point lights are held in the differed rendering part so that we can have lots of them present, i think its like 10,000 or something without any noticeable lag. The problem with this is that differed rendering does not allow for the use of alphas ( thus our grass method or trees or anything with an alpha ) would not render properly. My question at this point is there some "go between" method or are we stuck with this limitation. This might mean we have to go to tessellated grass via a model but I really dont want to go down that road till we have to.

This topic is closed to new replies.

Advertisement