Ability to change indirect light energy.
This commit is contained in:
parent
ecf80fbbba
commit
98cb49283d
|
@ -4466,6 +4466,7 @@ RID RasterizerStorageGLES3::light_create(VS::LightType p_type) {
|
||||||
light->type = p_type;
|
light->type = p_type;
|
||||||
|
|
||||||
light->param[VS::LIGHT_PARAM_ENERGY] = 1.0;
|
light->param[VS::LIGHT_PARAM_ENERGY] = 1.0;
|
||||||
|
light->param[VS::LIGHT_PARAM_INDIRECT_ENERGY] = 1.0;
|
||||||
light->param[VS::LIGHT_PARAM_SPECULAR] = 0.5;
|
light->param[VS::LIGHT_PARAM_SPECULAR] = 0.5;
|
||||||
light->param[VS::LIGHT_PARAM_RANGE] = 1.0;
|
light->param[VS::LIGHT_PARAM_RANGE] = 1.0;
|
||||||
light->param[VS::LIGHT_PARAM_SPOT_ANGLE] = 45;
|
light->param[VS::LIGHT_PARAM_SPOT_ANGLE] = 45;
|
||||||
|
|
|
@ -222,6 +222,7 @@ void Light::_bind_methods() {
|
||||||
ADD_GROUP("Light", "light_");
|
ADD_GROUP("Light", "light_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "light_color", PROPERTY_HINT_COLOR_NO_ALPHA), "set_color", "get_color");
|
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "light_color", PROPERTY_HINT_COLOR_NO_ALPHA), "set_color", "get_color");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "light_energy", PROPERTY_HINT_RANGE, "0,16,0.01"), "set_param", "get_param", PARAM_ENERGY);
|
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "light_energy", PROPERTY_HINT_RANGE, "0,16,0.01"), "set_param", "get_param", PARAM_ENERGY);
|
||||||
|
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "light_indirect_energy", PROPERTY_HINT_RANGE, "0,16,0.01"), "set_param", "get_param", PARAM_INDIRECT_ENERGY);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "light_negative"), "set_negative", "is_negative");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "light_negative"), "set_negative", "is_negative");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "light_specular", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param", "get_param", PARAM_SPECULAR);
|
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "light_specular", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param", "get_param", PARAM_SPECULAR);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "light_cull_mask", PROPERTY_HINT_LAYERS_3D_RENDER), "set_cull_mask", "get_cull_mask");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "light_cull_mask", PROPERTY_HINT_LAYERS_3D_RENDER), "set_cull_mask", "get_cull_mask");
|
||||||
|
@ -236,6 +237,7 @@ void Light::_bind_methods() {
|
||||||
ADD_GROUP("", "");
|
ADD_GROUP("", "");
|
||||||
|
|
||||||
BIND_ENUM_CONSTANT(PARAM_ENERGY);
|
BIND_ENUM_CONSTANT(PARAM_ENERGY);
|
||||||
|
BIND_ENUM_CONSTANT(PARAM_INDIRECT_ENERGY);
|
||||||
BIND_ENUM_CONSTANT(PARAM_SPECULAR);
|
BIND_ENUM_CONSTANT(PARAM_SPECULAR);
|
||||||
BIND_ENUM_CONSTANT(PARAM_RANGE);
|
BIND_ENUM_CONSTANT(PARAM_RANGE);
|
||||||
BIND_ENUM_CONSTANT(PARAM_ATTENUATION);
|
BIND_ENUM_CONSTANT(PARAM_ATTENUATION);
|
||||||
|
@ -273,6 +275,7 @@ Light::Light(VisualServer::LightType p_type) {
|
||||||
set_cull_mask(0xFFFFFFFF);
|
set_cull_mask(0xFFFFFFFF);
|
||||||
|
|
||||||
set_param(PARAM_ENERGY, 1);
|
set_param(PARAM_ENERGY, 1);
|
||||||
|
set_param(PARAM_INDIRECT_ENERGY, 1);
|
||||||
set_param(PARAM_SPECULAR, 0.5);
|
set_param(PARAM_SPECULAR, 0.5);
|
||||||
set_param(PARAM_RANGE, 5);
|
set_param(PARAM_RANGE, 5);
|
||||||
set_param(PARAM_ATTENUATION, 1);
|
set_param(PARAM_ATTENUATION, 1);
|
||||||
|
|
|
@ -46,6 +46,7 @@ class Light : public VisualInstance {
|
||||||
public:
|
public:
|
||||||
enum Param {
|
enum Param {
|
||||||
PARAM_ENERGY = VS::LIGHT_PARAM_ENERGY,
|
PARAM_ENERGY = VS::LIGHT_PARAM_ENERGY,
|
||||||
|
PARAM_INDIRECT_ENERGY = VS::LIGHT_PARAM_INDIRECT_ENERGY,
|
||||||
PARAM_SPECULAR = VS::LIGHT_PARAM_SPECULAR,
|
PARAM_SPECULAR = VS::LIGHT_PARAM_SPECULAR,
|
||||||
PARAM_RANGE = VS::LIGHT_PARAM_RANGE,
|
PARAM_RANGE = VS::LIGHT_PARAM_RANGE,
|
||||||
PARAM_ATTENUATION = VS::LIGHT_PARAM_ATTENUATION,
|
PARAM_ATTENUATION = VS::LIGHT_PARAM_ATTENUATION,
|
||||||
|
|
|
@ -1279,7 +1279,7 @@ void VisualServerScene::render_camera(RID p_camera, RID p_scenario, Size2 p_view
|
||||||
camera->zfar,
|
camera->zfar,
|
||||||
camera->vaspect
|
camera->vaspect
|
||||||
|
|
||||||
);
|
);
|
||||||
ortho = true;
|
ortho = true;
|
||||||
} break;
|
} break;
|
||||||
case Camera::PERSPECTIVE: {
|
case Camera::PERSPECTIVE: {
|
||||||
|
@ -1291,7 +1291,7 @@ void VisualServerScene::render_camera(RID p_camera, RID p_scenario, Size2 p_view
|
||||||
camera->zfar,
|
camera->zfar,
|
||||||
camera->vaspect
|
camera->vaspect
|
||||||
|
|
||||||
);
|
);
|
||||||
ortho = false;
|
ortho = false;
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
|
@ -2562,7 +2562,7 @@ bool VisualServerScene::_check_gi_probe(Instance *p_gi_probe) {
|
||||||
InstanceGIProbeData::LightCache lc;
|
InstanceGIProbeData::LightCache lc;
|
||||||
lc.type = VSG::storage->light_get_type(E->get()->base);
|
lc.type = VSG::storage->light_get_type(E->get()->base);
|
||||||
lc.color = VSG::storage->light_get_color(E->get()->base);
|
lc.color = VSG::storage->light_get_color(E->get()->base);
|
||||||
lc.energy = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_ENERGY);
|
lc.energy = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_ENERGY) * VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_INDIRECT_ENERGY);
|
||||||
lc.radius = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_RANGE);
|
lc.radius = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_RANGE);
|
||||||
lc.attenuation = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_ATTENUATION);
|
lc.attenuation = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_ATTENUATION);
|
||||||
lc.spot_angle = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_SPOT_ANGLE);
|
lc.spot_angle = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_SPOT_ANGLE);
|
||||||
|
@ -2582,7 +2582,7 @@ bool VisualServerScene::_check_gi_probe(Instance *p_gi_probe) {
|
||||||
InstanceGIProbeData::LightCache lc;
|
InstanceGIProbeData::LightCache lc;
|
||||||
lc.type = VSG::storage->light_get_type(E->get()->base);
|
lc.type = VSG::storage->light_get_type(E->get()->base);
|
||||||
lc.color = VSG::storage->light_get_color(E->get()->base);
|
lc.color = VSG::storage->light_get_color(E->get()->base);
|
||||||
lc.energy = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_ENERGY);
|
lc.energy = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_ENERGY) * VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_INDIRECT_ENERGY);
|
||||||
lc.radius = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_RANGE);
|
lc.radius = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_RANGE);
|
||||||
lc.attenuation = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_ATTENUATION);
|
lc.attenuation = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_ATTENUATION);
|
||||||
lc.spot_angle = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_SPOT_ANGLE);
|
lc.spot_angle = VSG::storage->light_get_param(E->get()->base, VS::LIGHT_PARAM_SPOT_ANGLE);
|
||||||
|
|
|
@ -360,6 +360,7 @@ public:
|
||||||
enum LightParam {
|
enum LightParam {
|
||||||
|
|
||||||
LIGHT_PARAM_ENERGY,
|
LIGHT_PARAM_ENERGY,
|
||||||
|
LIGHT_PARAM_INDIRECT_ENERGY,
|
||||||
LIGHT_PARAM_SPECULAR,
|
LIGHT_PARAM_SPECULAR,
|
||||||
LIGHT_PARAM_RANGE,
|
LIGHT_PARAM_RANGE,
|
||||||
LIGHT_PARAM_ATTENUATION,
|
LIGHT_PARAM_ATTENUATION,
|
||||||
|
|
Loading…
Reference in New Issue