(IMAGE HOSTING SCREWED UP THE POSTED IMAGES! will fix tonight)
Right, something different this time.
This is a modern swimmingpool scene i've been working on. It actually started as an architectural visualisation scene in 3dsmax, to be rendered with Vray.
But i got bored with the rendertimes, so decided to throw it in Unreal Engine and have a realtime scene.
Not much has changed from the original scene, just some poly optimizations (and a different trashcan, for some reason the other one didn't want to work! :mad: )
I love the baked GI from UDK
finally no more placing a dozen lights to fake one bounce! And the real-time reflection works quite decent as well.
Too bad UDK doesn't seem to support Anti Aliasing though.
anyway, here it is, straight from the engine so no photoshop:
And the rendered Vray scene (obviously photoshopped):
Replies
You would be my hero if you told me how you got thoes reflections! :O
In my project I had to fake it by mirroring the level and making the floor semi transparent
Great job man!
I've taken some of my archviz projects into UDK to see how they fare, so I can appreciate how much work that translation can be.
Really nice chrome on those ladders.
A minor nit pick is that I'm not sold on the floor reflections, they seem a bit too perfectly raytraced. I think the floor should be a bit more uneven or have tile seams or something to help break the reflections up a bit.
I was wondering when people would get around to putting Archviz stuff in UDK. Maybe it will become a trend and lead to more work opportunities for real time artists.
In case you didn't know, you can fake anti aliasing for stills in UDK by using the tiledshot command to render out large images then resizing in Photoshop.
Chris, pretty fantastic work! Keep it up!
For some reason this reminds me of perfect dark ( the original from the n64). Because u used to just walk around the base and look at cool things were.
I was pleasantly surprised!
You guys are right, i went a bit too far with the post processing, i'll tone it down.
I've turned down the reflection on a floor a tiny bit, and also quick added a slight bump like you suggested Ben Apuna.
Unfortunately the tiledshot approach doesn't work with the SceneCaptureReflect actor they just dont show up. I hope there's a workaround that i'm unaware of.
Does anybody know of a way to blur the output of a SceneCaptureReflect actor?
I'll get some shots of the materials and how to do the reflection.
in the meantime: [ame]http://www.youtube.com/watch?v=iWNyY3Ceh3s[/ame]
ps: I would also like to see those materials when you have the time.
think you could soften the edge of the pool area, with a slight bevel around that edge. Also, the bloom on the lights seems a ibt heavy, could either turn down its brightness, or turn down the bloom in general. Within the pool, would be cool to have a little bit of depth fog, or depth color shifting to simulate the darkening of the water in the vray render.
nice and clean stuff!
That's my idea anyways...
UDK can blur, just takes elbow grease.
The image below is what I am talking about, you can increase the quality of the blur by increasing the samples (number of directions).
Few things to consider about this approach:
You don't need 8 samples off the bat: 4 will do for a smaller blur. The "shift" you perform on each sample's UV coordinates determines the amount of blur,from a certain value onwards you'll start noticing a "ghosting" effect: this is when you need more samples
Lerping is not the correct/best/fastest way to do this: you just want to average things, so adding and dividing will do just fine. Add the 4 samples and divide by 4, that's it. If you use 8 you need to consider sample weighting: diagonal samples don't contribute as much as up/down and left/right samples. If those are 1 in weighting, the diagonal ones are sinus(45) in weighting.
Also this method works in UV-space, so uv-seams would pose a problem. In the case of cubmaps they would not, but those require a slightly different approach.
I think it's time to get into HLSL, as I think it would make quick work of anything like this.
So i tried making different render to texture maps and different scenecapture actors, slightly rotated to offset the captured image. But UDK crashed and i got tired.
Do you guys know how to let the shader think the screenposition is offset? (it will give another problem though, as it will react opposite to the kind of blurred reflection that would occur in real life, since by offsetting the image the closer reflected objects would be blurred more because there's a bigger movement difference compared to the far away objects, if that makes any sense)
Here are some screenshots of the materials. All disappointingly simple. The rest of the materials are just a texture and a specular, no fancy bits.
water
water
water
water
water
floor
chrome (this would actually benefit from a black fresnel falloff)
for help on setting up the reflections, have a look on this UDN page: http://udn.epicgames.com/Three/RenderToTexture.html
As for the light.. well... my official excuse is "i wanted to see how powerfull UDK was with GI". It's really just the big bright selfilluminating plane in the roof, and self illuminated textures in the pool lights. I let UDK do all the nasty work. Again, no magic.
moose, i never tried the depth calculations in unreal and have no idea how they work. i'll play around with it though, thanks for the idea
Xoliul - Your shaders rock and im very eager to see what you make. Been trying to make this happen myself ...just ended up capturing the cubemap at low res like a 32 or a 64. Sounds crappy but Ive seen this faked by grabbing lower mip levels of the cubemap...the results are marginal, but optimal for memory usage.
You can define a specific post process chain in the SceneCaptureReflectionActor:
you can use multiple post process chains, to have multiple blurs if you want:
I dont know if its necessary, but in doing it i created 3 RTTs, made the 2dTexture in the Material a Parameter, and made 3 instances of the Material, assigning each of the 3 textures to the MICs. In each Actor, set the RTT texture, and PP chain! win! That shouldnt reallymatter though, since you're just applying a Post Process Effect to a single view of the viewport and not the texture itself.
You should be able to add color effects, bloom settings, etc in the PP chains to get specific results!
as for the water, could check out:
Material'ExampleMap_Resources.M_UN_Liquid_BSP_BlueWater02'
The material is in a map included with UDK, and located beneath the grates in the floor.
I'll try it out tonight as i'm at work now.
Ow.. i saw tinypic screwed up the images i posted, i'll fix that tonight as well.
my only crit is that based on your camera animation, you are currently at midget status, or shorter
I might try to combine a vray bake with unreals vector specular maps, but it'll have to wait for now.
Firebert, whoops, you're right. forgot about the weird unreal scale!
Moose, thankyouthankyouthankyou. It works pretty well. BUT!
Here it works a treat
But with a bright shiny object behind it, you'll see that the blur doesnt blend the two together properly.
Can live with that though still a nice find!
I tried the depth colouring on the water again, but couldn't get it to work properly. The water in the UDK material you mentioned just behaves on the fresnel, not actual depth of the water. Other approaches with depth calculations also didn't work for the water body, i'm probably doing something wrong again
I tried using a fog volume, but those are additive and thus will only make the water brighter instead of darker.
on an unrelated note
made my day
But i have to say a lot of the materials you see on the web have so much redundant nodes in them.
EDIT: Also just another thing to add, its very hard to gauge the scale in your scene, many conventional sizes don't seem to match. But it could just be because of the unique architecture.
IchII: Even though this thread is almost a year old, your suggestions are good. I'll have another look at the scene to see if i can incorporate caustics, fog and some scale guide. Let's hope it still works with the new udk
I was looking into creating a reflective ocean shader and stumbled onto this thread.
I used your diagrams as guides and got the reflection to work somewhat.
The problem is everything is way too transparent and bright?
How did you regulate that in your shader?