I was looking forward to doing some modelling tonight, but ended up starting something at lunch today forgetting that work has max 2017 and I have 16 at home – doh! Instead I worked on a base shader for the environment.
I’ve been toying with the idea of a mega-texture, so I’m not sure if I’m going to get an awful lot of use out of this, but it seemed a sensible place to start if I’m not modelling.
The shader has slots for colour, material, normal and ambient occlusion maps, as well as a colour blend overlay and UV tiling option. Using this I can get multiple materials out of less textures, have to create less shaders and won’t have to compile a whole bunch of shaders at runtime. Lovley!
I also created a dynamic instanced emissive shader. This means I can edit it at runtime. Having a button where I can change the glowy colours in my level? Yes please!
I added my door asset to a blueprint and enabled input on it (totally did this first, didn’t forget and wonder why my blueprint was broken…no, never).
I then setup a key press event with a counter and a switch on int for setting the colour using a set vector parameter value on materials node. I reckon there’s a far better implementation for this, if it becomes more than a silly easter egg I’ll improve it.
And here it is! In its .gif-y glory!
Today I started working on a small game idea that’s been floating about in my head – a first person point and click, escape the room style adventure.
I originally had a sort of lab in my head, but after doing some research settled on a small self contained living space, a terraforming pod sort of thing.
I’d like to make this in a style similar to alien isolation – I love the lo fi look and what I’m called “rounded realism”. Its got a touch of stylization to it that I really like without moving into cartoony territory.
I started out by setting up my units in max and creating a 6 ft guideline. I then blocked out the space.
I made a few changes along the way, importing into unreal to see how it felt and then making changes where appropriate. At first I had a really long bed and when I shortened it had a big gap that I didn’t know what to do with. It was then I realized the pod had no bathroom…
Last thing I did today was remove the arms and gun from the default first person blueprint.
Looking forward to making some assets and scripts for this!
I was listening to the album Electric Girl by She the other day and wanted to try creating a post fx shader in the style of the album artwork.
There are several things that the art is doing that I’d like to recreate:
- R + B Shifting
- Subpixel Overlay
- Grid Overlay
R + B Shifting
I did the R + B shifting using the sobel edge detection technique I discussed in a previous post. When drawing the pixel, this depth checks the adjacent pixels and if the value difference is large enough, colours the pixel. I pushed out the values a little so it was checking 2 adjacent pixels to give a thicker edge.
The red/blue colour was done by getting the UVs of the screen position and getting the sine of the U component. I used this to lerp between my two colours. I then added this to a lerp between the red and blue components of the gbuffer contents, based on the same interpolator. Multiplying this by the gbuffer contents gave me a blend that brought out the red and blue areas of the scene depending on what the blend colour was.
If you’re reading this as a “how to” – don’t. This is super wrong and hacky. But it works for me!
I made the grid lines by multiplying the screen position UV with my scale UVs and feeding this into two linear gradients. I added these gradients to the U or V component divided by the line thickness, then added one on one side and subtracted one on the other. Flooring this then subtracting one from the other gave me a line! Adding them gave me a grid, but I changed my scale UVs to have lots of horizontal lines and the occasional vertical one.
I used this as an interpolator between my scene colour and line colour to give a bit of choice in the colour of the line.
LED Subpixel Element
The subpixel element was just a very small texture tiling texture. I tried adding and multiplying this, but went for an overlay blend in the end to get the look I was after.
Vignette and Grain
These were both from the scene post process volume settings, but I added an extra vingette to the shader to darken it – just used the radial gradient node that unreal has and used this as an interpolator between scene colour and scene colour raised to the power of 3.