Render roads directly as part of the tile texture in shaders/simple.frag
This commit is contained in:
@@ -127,31 +127,31 @@ void Tile::init(QSceneRenderer* s, int x, int y)
|
||||
buildHeights();
|
||||
|
||||
if (Tile::m_image_grass == NULL)
|
||||
Tile::m_image_grass = new QImage("/home/bart/project/tiletest/images/grass.jpg");
|
||||
Tile::m_image_grass = new QImage("/home/bart/git/Ascent-of-Man/images/grass.jpg");
|
||||
if (Tile::m_image_border == NULL)
|
||||
Tile::m_image_border = new QImage("/home/bart/project/tiletest/images/border.png");
|
||||
Tile::m_image_border = new QImage("/home/bart/git/Ascent-of-Man/images/border.png");
|
||||
if (Tile::m_image_rock == NULL)
|
||||
Tile::m_image_rock = new QImage("/home/bart/project/tiletest/images/Texturelabs_Stone_136XL_seamless.jpg");
|
||||
Tile::m_image_rock = new QImage("/home/bart/git/Ascent-of-Man/images/Texturelabs_Stone_136XL_seamless.jpg");
|
||||
if (Tile::m_image_sand == NULL)
|
||||
Tile::m_image_sand = new QImage("/home/bart/project/tiletest/images/Texturelabs_Soil_126XL_seamless.jpg");
|
||||
Tile::m_image_sand = new QImage("/home/bart/git/Ascent-of-Man/images/Texturelabs_Soil_126XL_seamless.jpg");
|
||||
if (Tile::m_image_water == NULL)
|
||||
Tile::m_image_water = new QImage("/home/bart/project/tiletest/images/Texturelabs_Water_152XL_seamless.jpg");
|
||||
Tile::m_image_water = new QImage("/home/bart/git/Ascent-of-Man/images/Texturelabs_Water_152XL_seamless.jpg");
|
||||
if (Tile::m_image_snow == NULL)
|
||||
Tile::m_image_snow = new QImage("/home/bart/project/tiletest/images/Texturelabs_Water_155XL_seamless.jpg");
|
||||
Tile::m_image_snow = new QImage("/home/bart/git/Ascent-of-Man/images/Texturelabs_Water_155XL_seamless.jpg");
|
||||
if (Tile::m_image_typemap == NULL)
|
||||
Tile::m_image_typemap = new QImage("/home/bart/project/tiletest/images/typemap.png");
|
||||
Tile::m_image_typemap = new QImage("/home/bart/git/Ascent-of-Man/images/typemap.png");
|
||||
if (Tile::m_image_sahara == NULL)
|
||||
Tile::m_image_sahara = new QImage("/home/bart/project/tiletest/images/Texturelabs_Soil_133L_seamless.jpg");
|
||||
Tile::m_image_sahara = new QImage("/home/bart/git/Ascent-of-Man/images/Texturelabs_Soil_133L_seamless.jpg");
|
||||
if (Tile::m_image_tundra == NULL)
|
||||
Tile::m_image_tundra = new QImage("/home/bart/project/tiletest/images/Texturelabs_Soil_135XL_seamless.jpg");
|
||||
Tile::m_image_tundra = new QImage("/home/bart/git/Ascent-of-Man/images/Texturelabs_Soil_135XL_seamless.jpg");
|
||||
if (Tile::m_image_redsand == NULL)
|
||||
Tile::m_image_redsand = new QImage("/home/bart/project/tiletest/images/Texturelabs_RedSand_seamless.jpg");
|
||||
Tile::m_image_redsand = new QImage("/home/bart/git/Ascent-of-Man/images/Texturelabs_RedSand_seamless.jpg");
|
||||
if (Tile::m_image_redrock == NULL)
|
||||
Tile::m_image_redrock = new QImage("/home/bart/project/tiletest/images/Texturelabs_RedRock_seamless.jpg");
|
||||
Tile::m_image_redrock = new QImage("/home/bart/git/Ascent-of-Man/images/Texturelabs_RedRock_seamless.jpg");
|
||||
if (Tile::m_image_forest == NULL)
|
||||
Tile::m_image_forest = new QImage("/home/bart/project/tiletest/images/Texturelabs_Forest_seamless.jpg");
|
||||
Tile::m_image_forest = new QImage("/home/bart/git/Ascent-of-Man/images/Texturelabs_Forest_seamless.jpg");
|
||||
if (Tile::m_image_farm == NULL)
|
||||
Tile::m_image_farm = new QImage("/home/bart/project/tiletest/images/farm.jpeg");
|
||||
Tile::m_image_farm = new QImage("/home/bart/git/Ascent-of-Man/images/farm.jpeg");
|
||||
|
||||
if (Tile::m_texture_grass == NULL) {
|
||||
m_texture_grass = new QOpenGLTexture(*m_image_grass);
|
||||
@@ -247,8 +247,8 @@ void Tile::init(QSceneRenderer* s, int x, int y)
|
||||
|
||||
if (first){
|
||||
m_program = new QOpenGLShaderProgram();
|
||||
m_program->addShaderFromSourceFile(QOpenGLShader::Vertex, "/home/bart/project/tiletest/shaders/simple.vert");
|
||||
m_program->addShaderFromSourceFile(QOpenGLShader::Fragment, "/home/bart/project/tiletest/shaders/simple.frag");
|
||||
m_program->addShaderFromSourceFile(QOpenGLShader::Vertex, "/home/bart/git/Ascent-of-Man/shaders/simple.vert");
|
||||
m_program->addShaderFromSourceFile(QOpenGLShader::Fragment, "/home/bart/git/Ascent-of-Man/shaders/simple.frag");
|
||||
m_program->link();
|
||||
}
|
||||
m_program->bind();
|
||||
@@ -361,6 +361,34 @@ void Tile::paint(QMatrix4x4 p, QVector3D& cameraPosition,QVector3D& cameraUpDire
|
||||
m_program->setUniformValue("farmTextureScale", fScale);
|
||||
m_program->setUniformValue("farmMappingMode", mappingMode);
|
||||
|
||||
const TileRoad *road = GameManager::instance().getRoadAt(m_x, m_y);
|
||||
if (road != nullptr) {
|
||||
const RoadTypeConfig *rCfg = GameManager::instance().roadConfigs().getRoadType(road->roadTypeId);
|
||||
int rType = 0;
|
||||
if (road->roadTypeId == "stone") rType = 1;
|
||||
else if (road->roadTypeId == "rail") rType = 2;
|
||||
|
||||
float rRad = rCfg ? (rCfg->worldWidth * 0.5f) : 0.034f;
|
||||
float rBorder = rCfg ? rCfg->borderWidth : 0.022f;
|
||||
float rScale = rCfg ? rCfg->textureScale : 2.4f;
|
||||
float rOpacity = rCfg ? rCfg->opacity : 0.90f;
|
||||
QColor col = rCfg ? rCfg->getColor() : QColor("#c49a62");
|
||||
QColor bCol = rCfg ? rCfg->getBorderColor() : QColor("#6b4b23");
|
||||
|
||||
m_program->setUniformValue("hasRoad", 1);
|
||||
m_program->setUniformValue("roadMask", (int)road->connectionMask);
|
||||
m_program->setUniformValue("roadType", rType);
|
||||
m_program->setUniformValue("roadRadius", rRad);
|
||||
m_program->setUniformValue("roadBorderWidth", rBorder);
|
||||
m_program->setUniformValue("roadTextureScale", rScale);
|
||||
m_program->setUniformValue("roadOpacity", rOpacity);
|
||||
m_program->setUniformValue("roadColor", QVector3D(col.redF(), col.greenF(), col.blueF()));
|
||||
m_program->setUniformValue("roadBorderColor", QVector3D(bCol.redF(), bCol.greenF(), bCol.blueF()));
|
||||
} else {
|
||||
m_program->setUniformValue("hasRoad", 0);
|
||||
m_program->setUniformValue("roadMask", 0);
|
||||
}
|
||||
|
||||
m_program->setUniformValue("time", time);
|
||||
m_program->setUniformValue("riverMask", (int)m_riverMask);
|
||||
m_object.bind();
|
||||
|
||||
Reference in New Issue
Block a user