itch.io is community of indie game creators and players

Devlogs

Crystal Lighting Engine v2.0

Crystal - 2D Lighting Engine
A downloadable asset pack for Windows

Welcome to Crystal Lighting Engine v2.0!

This is a major update in which the main addition is the sprite shadows redone from scratch. Also a lot of bug fixes! :D

Full Release Notes:

[ADDED] Sprite shadows reworked from scratch. Ultra-efficient shader-based sprite shadows with automatic batching. There's also support for texture pages marked with "Automatic Crop" (can be used without it as well).
Unlike before, now you can easily have multiple lights that cast sprite shadows, just like vertex shadows, in a simple way.
It's possible to create both dynamic and static sprite shadows. Dynamic shadows can be animated, useful for characters. It's also possible to project offset shadows, useful for top-down objects, such as the tree trunk.
All lights that support shadows support sprite shadows, including Direct Lights.
IMPORTANT: for sprite shadows to show, you must change the shadow shader (per light), example: shadowShaderType = LIGHT_SHADOW_SHADER_SPRITE_SMOOTH;
See .yyz example project for usage examples.
[ADDED] New macros for shadows shaders (shadowShaderType): LIGHT_SHADOW_SHADER_SPRITE, LIGHT_SHADOW_SHADER_SPRITE_BASIC, LIGHT_SHADOW_SHADER_SPRITE_SMOOTH.
[ADDED] Support to colored cookies on spot lights. Project images with a spot light (Phong and BRDF).
[ADDED] cookieAlpha variable to Spot Lights. The default value is 1. You can now use 0 to disable the cookie to improve GPU performance.
[ADDED] .AddMeshesFromSprite() to Crystal_Shadow(). Allows you to add vertex shadows using sprite tracing. Supports multiple sprite frames. Support only for convex shapes that are not straight cubes.
[ADDED] .FromSpriteConvexHull() method to Crystal_ShadowMesh().
[ADDED] .FromConvexHull() method to Crystal_ShadowMesh().
[ADDED] "xOffset" and "yOffset" parameters to .FromArray() from Crystal_ShadowMesh().
[ADDED] "resetAmbientLUT" parameter to .Destroy() function from Crystal_TimeCycle().
[ADDED] "shadowAlpha" parameter to lights (that support shadows). Allows you to set the transparency of shadows for more visual control.
[ADDED] Ambient LUT preview in the Debug UI. It's now possible to visualize and test ambient LUTs in-game.
[CHANGED] .SetVertexShadowsEnable() renamed to .SetShadowsEnable(), since this now disables both vertex shadows and sprite shadows. This function now completely disables the functionality if desired.
[CHANGED] Crystal_ShadowSprite() has undergone changes in its operation, it is worth reviewing the code and parameters.
[FIXED] Vertex shadows visuals drastically improved (they overlap more naturally now).
[FIXED] Sprite Lights sprites now support transparency (before it was mandatory to have a black background).
[FIXED] Normal maps and emissive materials now take gpu_set_alphatestref() into account, which should work the same as other sprites.
[FIXED] Blendmode of the "Combine" pass renderables is now "normal" by default.
[FIXED] Ambient light LUT now works correctly on Android (precision issue fixed).
[FIXED] Debug UI: error when trying to open a Crystal_MaterialLayer().
[FIXED] Improved dithering shader.
[FIXED] .GetLightsCollisionAt() performance improved a bit.
[REMOVED] Crystal_ShadowSpriteGroup() has been removed completely in favor of a rework made to work directly from Crystal_Renderer(), making it easy for you.
[REMOVED] .DrawInViewport() function, as this function is very redundant, since you can use .Draw() and draw wherever you want. This makes the Crystal less bloated too.
[REMOVED] Warning "not applied, material already rendering" and related warnings from .Apply(), because it is not necessary.

Thanks for listening!

Files

  • CrystalLightingEngine_v2.0.yymps 326 kB
    Aug 13, 2025
  • CrystalLightingEngine_2.0_Example.yyz 41 MB
    Aug 13, 2025
  • CrystalLightingEngine_v2.0_Demo.zip 23 MB
    Aug 13, 2025
Download Crystal - 2D Lighting Engine
Read comments (2)