Refactored 2D shader and lighting system
-Removed normal/specular properties from nodes -Create CanvasTexture, which can contain normal/specular channels -Refactored, optimized and simplified 2D shaders -Use atlas for light textures. -Use a shadow atlas for shadow textures. -Use both items aboves to make light rendering stateless (faster). -Reorganized uniform sets for more efficiency.
This commit is contained in:
parent
b67ccf1a6f
commit
84d734da0e
48 changed files with 1330 additions and 1471 deletions
|
|
@ -528,15 +528,14 @@ void TileMap::update_dirty_quadrants() {
|
|||
rect.position += tile_ofs;
|
||||
}
|
||||
|
||||
Ref<Texture2D> normal_map = tile_set->tile_get_normal_map(c.id);
|
||||
Color modulate = tile_set->tile_get_modulate(c.id);
|
||||
Color self_modulate = get_self_modulate();
|
||||
modulate = Color(modulate.r * self_modulate.r, modulate.g * self_modulate.g,
|
||||
modulate.b * self_modulate.b, modulate.a * self_modulate.a);
|
||||
if (r == Rect2()) {
|
||||
tex->draw_rect(canvas_item, rect, false, modulate, c.transpose, normal_map);
|
||||
tex->draw_rect(canvas_item, rect, false, modulate, c.transpose);
|
||||
} else {
|
||||
tex->draw_rect_region(canvas_item, rect, r, modulate, c.transpose, normal_map, Ref<Texture2D>(), Color(1, 1, 1, 1), RS::CANVAS_ITEM_TEXTURE_FILTER_DEFAULT, RS::CANVAS_ITEM_TEXTURE_REPEAT_DEFAULT, clip_uv);
|
||||
tex->draw_rect_region(canvas_item, rect, r, modulate, c.transpose, clip_uv);
|
||||
}
|
||||
|
||||
Vector<TileSet::ShapeData> shapes = tile_set->tile_get_shapes(c.id);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue