mirror of
https://github.com/Relintai/props.git
synced 2024-11-14 10:17:30 +01:00
Added a new bake_colors methods to PropMesher. Contains commented out code for now.
This commit is contained in:
parent
fb2e63702f
commit
cbbedf9128
@ -662,6 +662,66 @@ PoolVector<Vector3> PropMesher::build_collider() const {
|
|||||||
return face_points;
|
return face_points;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PropMesher::bake_colors() {
|
||||||
|
//if ((get_build_flags() & TerraChunkDefault::BUILD_FLAG_USE_LIGHTING) == 0)
|
||||||
|
// return;
|
||||||
|
|
||||||
|
/*
|
||||||
|
if (_vertices.size() == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
uint8_t *channel_color_r = chunk->channel_get_valid(TerraChunkDefault::DEFAULT_CHANNEL_LIGHT_COLOR_R);
|
||||||
|
uint8_t *channel_color_g = chunk->channel_get_valid(TerraChunkDefault::DEFAULT_CHANNEL_LIGHT_COLOR_G);
|
||||||
|
uint8_t *channel_color_b = chunk->channel_get_valid(TerraChunkDefault::DEFAULT_CHANNEL_LIGHT_COLOR_B);
|
||||||
|
uint8_t *channel_ao = chunk->channel_get_valid(TerraChunkDefault::DEFAULT_CHANNEL_AO);
|
||||||
|
uint8_t *channel_rao = chunk->channel_get_valid(TerraChunkDefault::DEFAULT_CHANNEL_RANDOM_AO);
|
||||||
|
|
||||||
|
Color base_light(_base_light_value, _base_light_value, _base_light_value);
|
||||||
|
|
||||||
|
for (int i = 0; i < _vertices.size(); ++i) {
|
||||||
|
Vertex vertex = _vertices[i];
|
||||||
|
Vector3 vert = vertex.vertex;
|
||||||
|
|
||||||
|
unsigned int x = (unsigned int)(vert.x / _voxel_scale);
|
||||||
|
unsigned int z = (unsigned int)(vert.z / _voxel_scale);
|
||||||
|
|
||||||
|
if (chunk->validate_data_position(x, z)) {
|
||||||
|
int indx = chunk->get_data_index(x, z);
|
||||||
|
|
||||||
|
Color light = Color(
|
||||||
|
channel_color_r[indx] / 255.0,
|
||||||
|
channel_color_g[indx] / 255.0,
|
||||||
|
channel_color_b[indx] / 255.0);
|
||||||
|
|
||||||
|
float ao = (channel_ao[indx] / 255.0) * _ao_strength;
|
||||||
|
float rao = channel_rao[indx] / 255.0;
|
||||||
|
|
||||||
|
ao += rao;
|
||||||
|
|
||||||
|
light.r += _base_light_value;
|
||||||
|
light.g += _base_light_value;
|
||||||
|
light.b += _base_light_value;
|
||||||
|
|
||||||
|
light.r -= ao;
|
||||||
|
light.g -= ao;
|
||||||
|
light.b -= ao;
|
||||||
|
|
||||||
|
light.r = CLAMP(light.r, 0, 1.0);
|
||||||
|
light.g = CLAMP(light.g, 0, 1.0);
|
||||||
|
light.b = CLAMP(light.b, 0, 1.0);
|
||||||
|
|
||||||
|
Color c = vertex.color;
|
||||||
|
light.a = c.a;
|
||||||
|
vertex.color = light;
|
||||||
|
|
||||||
|
_vertices.set(i, vertex);
|
||||||
|
} else {
|
||||||
|
vertex.color = base_light;
|
||||||
|
_vertices.set(i, vertex);
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef TERRAMAN_PRESENT
|
#ifdef TERRAMAN_PRESENT
|
||||||
void PropMesher::bake_lights(MeshInstance *node, Vector<Ref<TerraLight>> &lights) {
|
void PropMesher::bake_lights(MeshInstance *node, Vector<Ref<TerraLight>> &lights) {
|
||||||
ERR_FAIL_COND(node == NULL);
|
ERR_FAIL_COND(node == NULL);
|
||||||
@ -1078,6 +1138,8 @@ void PropMesher::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("build_mesh_into", "mesh_rid"), &PropMesher::build_mesh_into);
|
ClassDB::bind_method(D_METHOD("build_mesh_into", "mesh_rid"), &PropMesher::build_mesh_into);
|
||||||
ClassDB::bind_method(D_METHOD("build_collider"), &PropMesher::build_collider);
|
ClassDB::bind_method(D_METHOD("build_collider"), &PropMesher::build_collider);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("bake_colors"), &PropMesher::bake_colors);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("generate_normals", "flip"), &PropMesher::generate_normals, DEFVAL(false));
|
ClassDB::bind_method(D_METHOD("generate_normals", "flip"), &PropMesher::generate_normals, DEFVAL(false));
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("remove_doubles"), &PropMesher::remove_doubles);
|
ClassDB::bind_method(D_METHOD("remove_doubles"), &PropMesher::remove_doubles);
|
||||||
|
@ -157,6 +157,8 @@ public:
|
|||||||
|
|
||||||
PoolVector<Vector3> build_collider() const;
|
PoolVector<Vector3> build_collider() const;
|
||||||
|
|
||||||
|
void bake_colors();
|
||||||
|
|
||||||
#ifdef TERRAMAN_PRESENT
|
#ifdef TERRAMAN_PRESENT
|
||||||
void bake_lights(MeshInstance *node, Vector<Ref<TerraLight> > &lights);
|
void bake_lights(MeshInstance *node, Vector<Ref<TerraLight> > &lights);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user