3
\$\begingroup\$

I have a map with a lot of sprites. I could add a material to the sprite with diffuse shading and than add lots of lights. But that won't give me the result I want.


Examples

In the first image you can see that light is generated by torches. It's expanding its light at its best through 'open spaces' and it is stopped by blocks fairly quickly.

enter image description here


Here is a great example of the top layer. We can see some kind of 2D directional light? Please note that the lighting inside the house is generated by torches again. The cave on the right side shows a better example of how light is handled. Also, note the hole in the background, this is generating some extra light into the cave. As if the light is really shining through the background there.

enter image description here


What I have

You can clearly see the issue here. Lights increase their intensity. And light creates a squared edge around some of the tiles for some reason. Also, lots of lights will cause performance issues very quickly.

enter image description here


Raycasting?

I read that you can somehow use raycasting? To target 'open space' or something? I have no experience with shaders or with lighting in games at all. I'd love a well-explained answer with how to achieve this Terraria/Starbound lighting effect. This does not mean I'm saying that raycasting is the solution.


Minecraft

In Minecraft, light can travel for a certain amount of air blocks. It gradually fades to completely dark. In the Graphic settings you can enable Smooth Lightning, which will (obviously) smooth the lightning on the blocks.

I guess this is done with shaders, but I'm not sure. My guess is that this is performance heavy. But I'm thinking about air blocks (which are gameobjects) and maybe I have the wrong logic.


Similar, but no good

Take a look at similar posts with links to articles that cover the basics of raycasting. But no explanation on how to implement this in Unity and not the Terraria/Starbound effect I'd like to achieve:

https://stackoverflow.com/questions/41443130/make-pixel-lighting-like-terraria-and-starbound

https://stackoverflow.com/questions/31736654/how-to-achieve-terraria-starbound-2d-lighting


Video impression

For example, take a look at this video for a really good impression on how 2d light works in Starbound:

https://www.youtube.com/watch?v=F5d-USf69SU

I know this is a bit more advanced, but also the point light generated by the player's flash light is stopped by blocks and let through by the open spaces.


Other help forums

Also posted by me.

Stackoverflow: https://stackoverflow.com/questions/49288411/unity-2d-shader-lighting-like-terraria-or-starbound

Unity Forum: https://answers.unity.com/questions/1480518/2d-shader-lighting-like-terraria-or-starbound.html


\$\endgroup\$

closed as off-topic by DMGregory Mar 15 '18 at 15:01

  • This question does not appear to be about game development within the scope defined in the help center.
If this question can be reworded to fit the rules in the help center, please edit the question.