Jump to content

Rend2 - A Modern Renderer


Xycaleth

Recommended Posts

@@skew Great, another one who's interested in helping with the renderer. :D To the SSAO. The random function isn't the problem imo. If there would be blur applied to the rendered image it would look ok, i guess (thats what the "big" engines do, if i remember correctly). You could look in the ioquake3 repository for some enhancements. They reworked their ssao some months ago. https://github.com/ioquake/ioq3/commit/93e1feaaad19fcc97459b8fd15492b1ff3551bc3

 

Have you looked at the c code or only the glsl code? I could use some help with other effects if you are interested. I implemented some refraction prototype that could use some work to get the vanilla parity of this effect. E.g. the wobble effect is not implemented.

skew likes this
Link to comment

@@skew Great, another one who's interested in helping with the renderer. :D To the SSAO. The random function isn't the problem imo. If there would be blur applied to the rendered image it would look ok, i guess (thats what the "big" engines do, if i remember correctly). You could look in the ioquake3 repository for some enhancements. They reworked their ssao some months ago. https://github.com/ioquake/ioq3/commit/93e1feaaad19fcc97459b8fd15492b1ff3551bc3

 

Have you looked at the c code or only the glsl code? I could use some help with other effects if you are interested. I implemented some refraction prototype that could use some work to get the vanilla parity of this effect. E.g. the wobble effect is not implemented.

 

I do want to learn more about modern OpenGL so I'm interested in helping out with what little time I have :).  I started looking through the renderer source code to see how it was binding textures, providing data to the shaders, etc and generally walked through bits of it to get an understanding of the flow.

 

The mod I'm working on could really use a modern renderer, and is using the refraction with force push/pull, but also reflections, weather, and at least the SSAO.  Let me get past my next beta release in about a week and then I'll try to jump back into rend2.

 

EDIT: Thanks for the info re: ioq3. I was about to try that out to see if they evolved it any beyond the old rend2 used as a basis for the OpenJK version. Looks like the blur on the SSAO output is how most people make it look better.

Link to comment

Tried a Gaussian blur on the ssao result and it doesn't look too bad. Going to try a bilateral filter next because it's supposed to preserve edges better.

 

Without SSAO:

22CY64M.jpg

 

With SSAO + 2d Gaussian blur:

rzrdbwP.jpg

Link to comment

Hey skew. It's great to see you're trying out rend2 :) I don't think you'll get the results you want with a plain Gaussian blur. You will end up blurring across edges which ruins the effect. What you want is a depth-aware Gaussian blur which only takes samples across areas of continuity (i.e. not across edges). If have to say though, it's really difficult to notice the SSAO - I feel like something is wrong with it.

Link to comment
  • 4 weeks later...

Hey skew. It's great to see you're trying out rend2 :) I don't think you'll get the results you want with a plain Gaussian blur. You will end up blurring across edges which ruins the effect. What you want is a depth-aware Gaussian blur which only takes samples across areas of continuity (i.e. not across edges). If have to say though, it's really difficult to notice the SSAO - I feel like something is wrong with it.

I'm trying out a depth based blur now, and you're right that it was really difficult to notice.  I made a few changes and will post some shots soon.  Looks much more natural now.

 

I'm also working on getting post processing effects to properly show up in mirrors. Here is a test compositing them to the scene image rather than directly to the framebuffer if it's a mirror.  When I tried putting it directly to the framebuffer after rendering the portal surface, it never seems to persist in the framebuffer for some reason. Need to figure out why the colors seem off on the blur when compositing to tr.sceneImage though... format issue?

 

hddYUR0.jpg

 

EDIT: Also temporarily fixed the issue with the improper scissoring of mirrored surfaces (see previous screenshots) by temporarily disabling the scissoring, but this needs a proper fix.  From a cursory check, it looks like the mirrored surface is being split into multiple surfaces. It also looked like, since none of the vertices of the nearer surface are in the frustum, then it culls them entirely rather than checking if the surface exists in the frustum and clipping it to the view.  It was then calculating the scissoring coordinates from the remaining verts in clip space, which is only the further half of the mirror surface. I'm going to do more debugging on that to see what is exactly happening, but just another thing to eventually get right.

Smoo, Stoiss, Archangel35757 and 1 other like this
Link to comment
  • 1 month later...
  • 3 weeks later...

Something I'm curious about and I'm not sure if it's been mentioned. Would it be possible to use lower resolution textures on the LOD's? Like say for instance the lowest LOD uses a texture that's half the resolution as the main texture. Would that increase performance on a noticeable level or does the render engine stumble more with high polygon counts?

 

I've worked with other game engines that used low res textures but they also only had 1 other level of detail rather than 3+the high res model.

Link to comment
  • 4 weeks later...

No progress again still, but I've started writing up some documentation on roughly how rend2 is structured:

 

https://github.com/xycaleth/OpenJK/wiki/Rend2

 

Mainly aimed at anyone who is already familiar with graphics programming and may want to help. It will also help me because I'm always reminding myself "how does this work again?" every time I come back to it.

Link to comment
  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...