Page 1 of 1

Wavesets & Reflections

PostPosted: Tue Jul 21, 2020 7:59 pm
by jkcui1687
I have got reflections down pretty good. But I can't seem to get reflections to show up after I apply the basic water wave mod to my plane.

This is basically what I'm doing:
The plane has a basic material. Under textures I have the world environment map I created as an image cubemap (using 6 images).
This gives me a mirror finish cubemap reflection in game. All good.
Now I add the basic plasma wave mod, which gives me a pretty good wave at default settings. I put the same cubemap texture that I created in the EnvMap slot.
When I hop into the game, the wave is there, but no reflection.

I have tested this with both Static and Animated environment types, as well as both cube and plane mapping methods (using the visibility control empty object), and have even tried removing the environment texture from the plane and only keeping it in the EnvMap slot under the wave mod settings. Still giving me issues.

Any thoughts on this?


Re: Wavesets & Reflections

PostPosted: Wed Jul 22, 2020 8:05 pm
by Tsar Hoikas
You're going to have to use an "animated" cube (read: dynamic) environment map for your wave modifier. The engine does all kinds of bespoke things around waves and only supports that particular environment map type. If you don't supply one at all or specify the wrong type, the engine makes one for you. Unfortunately, the default environment map is unable to reflect anything at all.

Re: Wavesets & Reflections

PostPosted: Thu Jul 23, 2020 8:59 am
by jkcui1687
Thanks Tsar, this narrows things down a bit. Will do more tests with this and see what happens.

Re: Wavesets & Reflections

PostPosted: Sat Jul 25, 2020 8:40 pm
by jkcui1687
Unfortunately, I've not gotten this to work at all. Can anybody confirm they have this working with the latest Korman (0.10)? If so could you give me a hand with this?


Here's my settings for the EnvMap.

Re: Wavesets & Reflections

PostPosted: Sun Jul 26, 2020 7:52 pm
by Tsar Hoikas
Can you share the settings for the viewpoint object's modifiers and the water modifiers?

Re: Wavesets & Reflections

PostPosted: Mon Jul 27, 2020 4:07 pm
by jkcui1687
Sure, settings are below. I also uploaded the test scene on db

Some more info:
- My water surface has been subdivided and converted to triangles.
- Objects and lights are all plazma objects
- Applied rotation & scale to meshes
- Viewpoint object has the same z value as my water plane

I've messed around with the environment sphere & reflection settings on the Basic Water modifier a bit, but no luck.

Also, I thought maybe it could be because I am using the Steam version of Uru:CC as my offline uru, however I am able to view other ages using water reflections just fine (i.e. the fountain in Semjay's Tovaht age). I installed my physical copy of the game just to be safe, but same results.

Appreciate any help you can provide on this :)


Re: Wavesets & Reflections

PostPosted: Tue Jul 28, 2020 6:16 pm
by Tsar Hoikas
I think there are two things preventing the reflection from working. I haven't actually tested any of this, so hopefully my recollections are all correct.

Uru expects for water to be non-flat so that it can use the depth information for culling and opacity of the reflection. IIRC as the water becomes deeper, the reflection should become more opaque. Since your water is flat, that might be causing us some issues. As a guess, I think turning down the "Reflection: End" value should help. Also, you may need to increase the "Environment Sphere Radius" to make sure more distant objects are reflected.

While our wiki is not exactly bursting with information on the topic, Cyan's former lead graphics programmer wrote an article about how the water shaders in Uru work. You can read about it GPU Gems.

Re: Wavesets & Reflections

PostPosted: Wed Jul 29, 2020 10:29 am
by Sirius
I did a few tests, and lowering the water's vertices (to about ground height) will definitely help as Hoikas said. Don't move the object's origin though (it is used to determine the water's mean level). You will see the water mesh have actual waves instead of being distorted side-to-side.

(On a side note Hoikas, it seems the water is being culled when nearing the lower edge of the screen due to the bounding box being computed on the original mesh. If that's not too much bother, it might be worth making it slightly taller for objects with a waveset modifier, to account for both water height and wave heights... this is not critical though)

I did everything I could (including increasing the DCM's distance, removing visregions, and copying settings from other Ages), but didn't get the reflections working though. For some reason the avatar is correctly picked up by the reflection (even from farther away), but the wall isn't at all. Strange, I have absolutely no idea why :?

Tsar Hoikas wrote:While our wiki is not exactly bursting with information on the topic, Cyan's former lead graphics programmer wrote an article about how the water shaders in Uru work. You can read about it GPU Gems.

I would like to add this topic, in which I've tried to summarize the most important points as best I could. The Denkasen test Age is also useful to test each param in real time. It's available on Deep Island/Drizzle, find a rock with a turtle drawing on it, and you will be able to tweak the water mesh in real time (you can still move around, just right-click the edge of your screen).
This was from a while ago when PyPRP/AlcScript was the norm, so some parameters might not be named correctly, and it might not be as clear as other articles from the wiki, but might still be helpful to some...