- Home /
How to make homogenous lighting with point lights?
I'm looking for a way to make point lights affect surfaces in a more "cartoony" way, without a higher intensity in the middle (on the ground) and realistic dissipation towards the outer rim. Basically - just a circle of homogenous light with equal intensity in every spot, without the dissipation effect.
Similar to what the spotlight does (equal light inside the target area, with no dissipation or brighter color at the center).
I suspect the answer lies in shaders for textures, but I honestly have zero experience with that and would really appreciate any pointers on where to start looking.
Answer by mayorc1978 · Feb 25, 2014 at 07:21 PM
You actually want a light which has constant light intensity x (no attenuation based on distance) and 0 light intensity outside the Point Light Range.
You need to define a custom light model, using a vert/frag shader.
You could do this by passing the shader (Using a per Material Script - AKA Custom Material Editor) a position as a Vector4 and a range for that light as a float (Plus a LightColor and a LightIntensity), you can define this for every Selfmade GameObject you want to define as your Custom Point Light.
In the shader you need to calculate distance from lightsource to fragment, if the distance is < range then you multyply the AlbedoColor * customLightIntensity1 if is distance> range you multiply the AlbedoColor by 0.
So for multiple CustomPointLights you will have something like:
isInRange1 = (fragmentToLightSource < range1) ? 1.0 : 0.0;
lightInRange1 = lightColor1 * lightIntensity1 * isInRange1;
finalColor = AlbedoColor * (lightInRange1 + lightInRange2 + lightInRange3 + ...);
Your answer
Follow this Question
Related Questions
How to send an array of positions to a shader. 0 Answers
How do I keep an object lit when a light moves past it? 0 Answers
a 'bar' or neon like light. 3 Answers
What kind of values come out of _WorldSpaceLightPos0? 1 Answer
How to make an object emit light without using the standard shader 0 Answers