Full Inverse-Quadratic-Equation Lamp Falloff
This patch adds a new `falloff_type` ('Inverse Coefficients') for Lamps in
Blender-Internal and GLSL.
The current falloff modes use a formula like this inverse-square one:
`I = E × (D^2 / (D^2 + Q × r^2))`
While such a formula is simple for 3D-artists to use, it's algebraically
cumbersome to work with. Game-designers authoring their own shaders
could benefit much more by having direct control of falloff-coefficients:
`I = E × (1.0 / (coefC + coefL × r + coefQ × r^2))`
In this mode, the `distance` parameter is unused (except for 'Sphere'
mode); instead relying on the designer to mathematically-model the
falloff-behavior.
The UI has been patched like so:
{F153843}
Reviewers: brecht, psy-fi
Reviewed By: psy-fi
Subscribers: brita_, antidote, campbellbarton, psy-fi
Differential Revision: https://developer.blender.org/D1194
This commit is contained in:
@@ -59,7 +59,7 @@ RAS_OpenGLLight::~RAS_OpenGLLight()
|
||||
if ((lamp = GetGPULamp())) {
|
||||
float obmat[4][4] = {{0}};
|
||||
GPU_lamp_update(lamp, 0, 0, obmat);
|
||||
GPU_lamp_update_distance(lamp, la->dist, la->att1, la->att2);
|
||||
GPU_lamp_update_distance(lamp, la->dist, la->att1, la->att2, la->coeff_const, la->coeff_lin, la->coeff_quad);
|
||||
GPU_lamp_update_spot(lamp, la->spotsize, la->spotblend);
|
||||
}
|
||||
}
|
||||
@@ -291,7 +291,7 @@ void RAS_OpenGLLight::Update()
|
||||
GPU_lamp_update(lamp, m_layer, hide, obmat);
|
||||
GPU_lamp_update_colors(lamp, m_color[0], m_color[1],
|
||||
m_color[2], m_energy);
|
||||
GPU_lamp_update_distance(lamp, m_distance, m_att1, m_att2);
|
||||
GPU_lamp_update_distance(lamp, m_distance, m_att1, m_att2, m_coeff_const, m_coeff_lin, m_coeff_quad);
|
||||
GPU_lamp_update_spot(lamp, m_spotsize, m_spotblend);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user