Meet shaders (part 1) – Luna The shadow dust effect

Hi, Today I want to share a result of my first aproach to shader implementation. I have decided to look closeler to this feature after seeing LUNA – The Shadow Dust (lantern-studio.com). Visualy astonishong.

I wanted to make a reverse engineering some effect i have noticed waching this game.

I decided to use Universal Render Pieline. This Unity asset gives a posiibility to make shaders in very simple manner, using visual graph

Requirements

Unity 2020.2.2f1 or higher

In this version 2D renderers feature is not experimental anymore and shader properties are exposed for the animator which is very useful

Installation UPR

UPR works in Unity V2019 and above. To install UPR go to Unity, Window → Package Manager, and search Universal RP

Create a folder named URP or any other name you like, then create → Rendering → Universal Render Pipeline → Pipeline Asset (Forward Renderer)

Then In the Edit → Project Settings → Graphics, select the UniversalRenderPipelineAsset (UniversalRenderPipelineAsset) for Scriptable Render Pipeline Settings

In order to use 2d lights. create → Rendering → Universal Render Pipeline-> 2D Renderer and assign it to Universal Render Pipeline Asset created above

Creating first shader

Create->Shader->Universal Render Pipeline-> Sprite Lit Shader Graph

I have createt property Color(Input parameter of the shader accessible from a scene) for sand color. Honestly until shader is not finished it is better create input node insted property. You will be able to see results on preview.

I have created a property: texture. Analogicaly it is better to drag and drop some texture into the graph.

One more parameter Value (called “phase”). (Insted of one You can add slider to play with parameter an remove it after shader is ready)

All parameters have to be dragged and dropped to the graph.

I have connected color with “Base Color” on “Fragment” Node.

With texture wchich was actualy a mask i had to play a little bit. I show You the finall result of it

Slider (finaly “phase”) was conected twice: With R input of “Combine” node” and with “Add Node” (adding 0.01 value). Output of add withc was connected two “G” input of “Combine”. In this way i hav coded in RG two values (not colors) which can be input Min Max of Remap (requires two values input) Second Remap input was set to 0 and 1. Output of a Remap was connected two. Sprite Mask channel of “Fragmnt” node.\

Remap: Math->Range->Remap

Add : Math ->Basic

Combine: Channel

Click “Save Asset”

Create material and set this shader in shader property. Set texture like this:

Set a sand Color

Now You can apply this material to sprite (there will be warning that this material have no main texture but it will work anyway)

You can create sprite animation changing “phase” value of shader

Comments are closed.