Shader Buildings - fix roofs, set small tex to 5m
Fix a bug in the roof transformation that meant the roof ridges were not sized correctly. Also change the texture "unit" width for small buildings from 6m to 5m following discussions with Rick Gruber-Riemer.
This commit is contained in:
parent
0a7514c47b
commit
4b280a00db
@ -503,14 +503,14 @@ typedef QuadTreeBuilder<LOD*, SGBuildingBin::BuildingInstance, MakeBuildingLeaf,
|
|||||||
// SMALL BUILDINGS
|
// SMALL BUILDINGS
|
||||||
// Maximum texture height is 3 stories.
|
// Maximum texture height is 3 stories.
|
||||||
// Small buildings are represented on the bottom 18 rows
|
// Small buildings are represented on the bottom 18 rows
|
||||||
// Each block is 6m wide and 3m high.
|
// Each block is 5m wide and 3m high.
|
||||||
int wall_row = wall_tex_index % 6;
|
int wall_row = wall_tex_index % 6;
|
||||||
int roof_row = roof_tex_index % 6;
|
int roof_row = roof_tex_index % 6;
|
||||||
float wall_offset_x = 0.0f;
|
float wall_offset_x = 0.0f;
|
||||||
float wall_offset_y = (float) wall_row * 3.0f * BUILDING_TEXTURE_BLOCK_HEIGHT;
|
float wall_offset_y = (float) wall_row * 3.0f * BUILDING_TEXTURE_BLOCK_HEIGHT;
|
||||||
float roof_offset_x = 0.0f;
|
float roof_offset_x = 0.0f;
|
||||||
float roof_offset_y = (float) roof_row * 3.0f * BUILDING_TEXTURE_BLOCK_HEIGHT;
|
float roof_offset_y = (float) roof_row * 3.0f * BUILDING_TEXTURE_BLOCK_HEIGHT;
|
||||||
float gain_x = min(0.5f, std::round(width / 6.0f) * BUILDING_TEXTURE_BLOCK_WIDTH);
|
float gain_x = min(0.5f, std::round(width / 5.0f) * BUILDING_TEXTURE_BLOCK_WIDTH);
|
||||||
float gain_y = (float) (min(3, floors)) * BUILDING_TEXTURE_BLOCK_HEIGHT;
|
float gain_y = (float) (min(3, floors)) * BUILDING_TEXTURE_BLOCK_HEIGHT;
|
||||||
|
|
||||||
// Checks
|
// Checks
|
||||||
@ -597,9 +597,9 @@ typedef QuadTreeBuilder<LOD*, SGBuildingBin::BuildingInstance, MakeBuildingLeaf,
|
|||||||
if ((roof_shape == 3) || (roof_shape == 4) || (roof_shape == 7)) {
|
if ((roof_shape == 3) || (roof_shape == 4) || (roof_shape == 7)) {
|
||||||
// Hipped, half-hipped, mansard
|
// Hipped, half-hipped, mansard
|
||||||
// The pitch height expressed as a fraction of the building width/depth such that the hipped
|
// The pitch height expressed as a fraction of the building width/depth such that the hipped
|
||||||
// roof has a pitch of around 45 degrees.
|
// roof has a pitch of around 45 degrees. A minimum of 0.5 so that they have at least some ridge.
|
||||||
if (roof_orientation == 0) rooftop_scale = Vec2f(min(0.5f,(width - 2*pitch_height) / width), 0.0f);
|
if (roof_orientation == 0) rooftop_scale = Vec2f(max(0.5f,(width - 2*pitch_height) / width), 0.0f);
|
||||||
if (roof_orientation == 1) rooftop_scale = Vec2f(0.0f, min(0.5f,(depth - 2*pitch_height) / width));
|
if (roof_orientation == 1) rooftop_scale = Vec2f(0.0f, max(0.5f,(depth - 2*pitch_height) / width));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pyramidal, dome, onion
|
// Pyramidal, dome, onion
|
||||||
|
Loading…
Reference in New Issue
Block a user