Open mindinsomnia opened 4 years ago
It's already possible to define a size (!= radius) for all kinds of lights in the master
branch. Increasing a light's size will also affect the shadow's blurriness in a PCSS-like fashion. That said, only sphere shapes are supported. I don't know if reduz plans to support other shapes for specular reflections (it doesn't sound so easy).
To add the what Calinou said, we currently support sizes for lights. We will eventually add proper area lights which should have configurable shape/size.
I've found this issue, also I see that area light issue was closed before. I'm not completely sure that this is a duplicate and I want to bump this proposal. Area light also allows to specify texture source input based on: https://eheitzresearch.wordpress.com/415-2/
I'm not sure though how this could work with Godot internal SDFGI, because Im not very familiar with internals of it So the question is, area lights not introduced yet because nobody have took it or because it's incompatible in some way/other problems?
I'm not sure though how this could work with Godot internal SDFGI, because Im not very familiar with internals of it So the question is, area lights not introduced yet because nobody have took it or because it's incompatible in some way/other problems?
SDFGI already makes it possible to create area lights in theory (MeshInstance3D nodes with emissive materials). However, it's not possible to have the object hidden while still emitting the light. VoxelGI makes this possible with static objects by baking the VoxelGI node then hiding the node that emits light.
Proper real-time area lights (without relying on VoxelGI or SDFGI) may be added in the long run, but not for 4.0.
Proper real-time area lights (without relying on VoxelGI or SDFGI) may be added in the long run, but not for 4.0.
Why not? Even Roblox has it.
Why not? Even Roblox has it.
These can be very expensive to render if arbitrary shapes/textures are allowed, even without shadows. You'd probably be mainly able to use them for Movie Maker mode and not much else.
An implementation that is limited to box/sphere shapes is significantly less expensive, but shadows still can't be done with a reasonable cost (outside of raytraced shadows, which are expensive on their own).
Roblox's shadows for area lights aren't exactly accurate, but they are completely adequate for almost all use cases. They also run very well considering the performance. I suggest someone look into how it's done in Roblox since they're obviously not using ray tracing for their surface/area lights.
EDIT: Also, they have shadows.
Any updates on this yet?
Describe the project you are working on:
Third person shooter
Describe the problem or limitation you are having in your project:
I would like to achieve more accurate / realistic lighting across surfaces and have more control over the shape and size of specular highlights.
Describe the feature / enhancement and how it helps to overcome the problem or limitation:
Some real time engines provide the ability to define the shape of a light source to control the shape of the specular highlights. This produces much greater realism and more interesting visuals, and allows for approximating the shape of some light emitting scene objects with a shaped light. When combined with surfaces that have interesting properties, such as varying roughness and normal mapss, the results can be quite beautiful.
The reflections are also real time, have no issues with sampling or noise, work even with the source of the reflection is outside of the camera frame (unlike screenspace reflections) and don't require any baking, lightmaps or lightprobes.
Example of this feature as it was implemented in Eevee, runs butter smooth in real time:
Describe how your proposal will work, with code, pseudocode, mockups, and/or diagrams:
I am not familiar enough with Godot's internal code to know how compatible a change like this would be, or if it would be acceptable to make a change like this that would alter how existing specular highlights look for existing projects using OmniLights. I also understand that it's possible this kind of feature could introduce higher performance requirements.
If breaking compatibility is acceptable, and the performance impact for each light is negligible, I would like there to be simply be an option added to existing OmniLights and Spotlights to control their radius and shape (circle, sphere, rectangle as a minimum would be nice).
If breaking compatibility is not an option, or if this kind of light requires substantially more computation than a regular light, perhaps a different set of light nodes could be implemented, such as 'SphereLight', 'RectLight', 'CircleLight', etc. Or simply one 'catch all' light called 'ShapedLight' etc.
If this enhancement will not be used often, can it be worked around with a few lines of script?:
I do not believe it would be possible to implement this with just a few lines of scripting.
For 3D artist chasing realism in their 3D environments, I would expect they would use this feature on virtually every light in their scene.
Is there a reason why this should be core and not an add-on in the asset library?:
This feature would greatly increase the potential head room for realistic 3D imagery in Godot, something which would be useful to a broad range of users, and even for cartoony art styles, having more artistic control over lighting would allow for producing much more interesting and visually beautiful imagery.
I am not capable of making an assessment on whether or not it would be possible to implement a change like this as an addon but I imagine such lighting calculations are fairly 'core' to how Godot works and could not be easily changed by an addon, and such an addon would be tedious to maintain and equally tedious for users to repeatedly install.