Hello Elias, thank you so much!
Of course, if you want to join Discord, you're also welcome ๐
1. Yes, the color of the shadows is defined by the ambient light. It is possible to add blur natively to sprite shadows, and you have full control of the blur amount, resolution and others.
2. Yes, in fact, this video was one of my inspirations ^^, but in Crystal I optimized to use vertex buffers that are frozen instead, and rendered with just a single draw call, if they are baked, making it more performant.
3. Yes, you can add lights with shadows even if the ambient light is at 0 intensity, and you have full control over the intensity of the shadows.
4. Yes, you can use "inner", "falloff" and "radius" parameters to get this result.
5. Crystal uses pure GML code, with no external dependencies, so if it doesn't work on other platforms it could be a GameMaker issue. The shaders are written in GLSL ES, which is highly supported on all platforms, and I don't use noise functions currently, which are known to cause issues, so it should work fine. The MacOS demo was not compiled by me, as I don't have a Mac computer, a user helped me with that, so it's a bit out of my reach. If something goes wrong, just tell me how to reproduce it and I'll fix it quickly.
6. Currently shadows that have dynamic projections are somewhat limited. They cannot move x and y, as they were made for scenery, using a shader to move the shadows. Only normal sprites (without projection) can do this. I have plans to improve this in the future.
You can use vertex shadows instead, which can be used both dynamically and statically, and can be moved freely.
7. Yes, you should :)
Crystal offers a lot of customization, including using crystal_pass_submit() to submit custom code for a render pass. It is possible to completely replace the final shader using .SetRenderClass()