mirror of
https://github.com/rwengine/openrw.git
synced 2024-09-15 15:02:34 +02:00
normalized texture names to lowercase
This commit is contained in:
parent
5dc40cb07b
commit
45d0c5b77c
@ -210,6 +210,9 @@ Model* LoaderDFF::loadFromMemory(char *data, GTAData *gameData)
|
||||
// The data is null terminated anyway.
|
||||
textureName = namesec.raw();
|
||||
alphaName = alphasec.raw();
|
||||
|
||||
std::transform(textureName.begin(), textureName.end(), textureName.begin(), ::tolower );
|
||||
std::transform(alphaName.begin(), alphaName.end(), alphaName.begin(), ::tolower );
|
||||
|
||||
geom->materials[m].textures[t] = {textureName, alphaName};
|
||||
}
|
||||
|
@ -4,6 +4,7 @@
|
||||
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <algorithm>
|
||||
|
||||
bool TextureLoader::loadFromFile(std::string filename, GTAData* gameData)
|
||||
{
|
||||
@ -22,8 +23,11 @@ bool TextureLoader::loadFromFile(std::string filename, GTAData* gameData)
|
||||
return loadFromMemory(data, gameData);
|
||||
}
|
||||
|
||||
GLuint gErrorTextureData[] = { 0xFF0000FF, 0xFF00FF00, 0xFFFF0000, 0xFFFF0000 };
|
||||
GLuint gErrorTextureData[] = { 0xFFFF00FF, 0xFF000000, 0xFF000000, 0xFFFF00FF };
|
||||
GLuint gDebugTextureData[] = {0xFF0000FF, 0xFF00FF00};
|
||||
GLuint gTextureRed[] = {0xFF0000FF};
|
||||
GLuint gTextureGreen[] = {0xFF00FF00};
|
||||
GLuint gTextureBlue[] = {0xFFFF0000};
|
||||
|
||||
GLuint getErrorTexture()
|
||||
{
|
||||
@ -37,6 +41,7 @@ GLuint getErrorTexture()
|
||||
2, 2, 0,
|
||||
GL_RGBA, GL_UNSIGNED_BYTE, gErrorTextureData
|
||||
);
|
||||
glGenerateMipmap(GL_TEXTURE_2D);
|
||||
}
|
||||
return errTexName;
|
||||
}
|
||||
@ -119,8 +124,9 @@ GLuint createTexture(RW::BSTextureNative& texNative, RW::BinaryStreamSection& ro
|
||||
type = GL_UNSIGNED_SHORT_1_5_5_5_REV;
|
||||
break;
|
||||
case RW::BSTextureNative::FORMAT_8888:
|
||||
format = GL_RGBA;
|
||||
type = GL_UNSIGNED_INT_8_8_8_8_REV;
|
||||
format = GL_BGRA;
|
||||
//type = GL_UNSIGNED_INT_8_8_8_8_REV;
|
||||
type = GL_UNSIGNED_BYTE;
|
||||
break;
|
||||
case RW::BSTextureNative::FORMAT_888:
|
||||
format = GL_BGRA;
|
||||
@ -136,6 +142,9 @@ GLuint createTexture(RW::BSTextureNative& texNative, RW::BinaryStreamSection& ro
|
||||
format, type, coldata
|
||||
);
|
||||
}
|
||||
else {
|
||||
return getErrorTexture();
|
||||
}
|
||||
|
||||
GLenum texFilter = GL_LINEAR;
|
||||
switch(texNative.filterflags & 0xFF) {
|
||||
@ -199,6 +208,7 @@ bool TextureLoader::loadFromMemory(char *data, GTAData *gameData)
|
||||
|
||||
RW::BSTextureNative texNative = rootSection.readStructure<RW::BSTextureNative>();
|
||||
std::string name = std::string(texNative.diffuseName);
|
||||
std::transform(name.begin(), name.end(), name.begin(), ::tolower );
|
||||
bool transparent = false;
|
||||
GLuint id = createTexture(texNative, rootSection, &transparent);
|
||||
|
||||
|
@ -54,11 +54,8 @@ const char *fragmentShaderSource = "#version 130\n"
|
||||
" if(c.a < 0.1) discard;"
|
||||
" float fogZ = (gl_FragCoord.z / gl_FragCoord.w);"
|
||||
" float fogfac = clamp( (FogEnd-fogZ)/(FogEnd-FogStart), 0.0, 1.0 );"
|
||||
//" float l = clamp(dot(Normal, SunDirection), 0.0, 1);"
|
||||
//" gl_FragColor = vec4(vec3(fogfac), 1.0);"
|
||||
//" gl_FragColor = mix(AmbientColour, c, fogfac);"
|
||||
" gl_FragColor = mix(AmbientColour, BaseColour * (vec4(0.5) + Colour * 0.5) * (vec4(0.5) + DynamicColour * 0.5) * c, fogfac);"
|
||||
// " gl_FragColor = vec4((Normal*0.5)+0.5, 1.0);"
|
||||
// " gl_FragColor = c * vec4((Normal*0.5)+0.5, 1.0);"
|
||||
"}";
|
||||
|
||||
const char *skydomeVertexShaderSource = "#version 130\n"
|
||||
@ -471,11 +468,14 @@ bool GTARenderer::renderSubgeometry(Model* model, size_t g, size_t sg, const glm
|
||||
Model::Material& mat = model->geometries[g]->materials[subgeom.material];
|
||||
|
||||
if(mat.textures.size() > 0 ) {
|
||||
TextureInfo& tex = engine->gameData.textures[mat.textures[0].name];
|
||||
if(tex.transparent && queueTransparent) {
|
||||
return false;
|
||||
auto t = engine->gameData.textures.find(mat.textures[0].name);
|
||||
if(t != engine->gameData.textures.end()) {
|
||||
TextureInfo& tex = t->second;
|
||||
if(tex.transparent && queueTransparent) {
|
||||
return false;
|
||||
}
|
||||
glBindTexture(GL_TEXTURE_2D, tex.texName);
|
||||
}
|
||||
glBindTexture(GL_TEXTURE_2D, tex.texName);
|
||||
}
|
||||
|
||||
if( (model->geometries[g]->flags & RW::BSGeometry::ModuleMaterialColor) == RW::BSGeometry::ModuleMaterialColor) {
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <engine/GTAEngine.hpp>
|
||||
#include <loaders/LoaderDFF.hpp>
|
||||
#include <render/DebugDraw.hpp>
|
||||
#include <render/Model.hpp>
|
||||
#include <ai/GTAAIController.hpp>
|
||||
#include <ai/GTAPlayerAIController.hpp>
|
||||
#include <objects/GTACharacter.hpp>
|
||||
@ -548,6 +549,24 @@ void render()
|
||||
auto p = debugObject->getPosition();
|
||||
ss << "Position: " << p.x << " " << p.y << " " << p.z << std::endl;
|
||||
ss << "Health: " << debugObject->mHealth << std::endl;
|
||||
if(debugObject->model) {
|
||||
auto m = debugObject->model;
|
||||
ss << "Textures: " << std::endl;
|
||||
for(auto it = m->geometries.begin(); it != m->geometries.end();
|
||||
++it )
|
||||
{
|
||||
auto g = *it;
|
||||
for(auto itt = g->materials.begin(); itt != g->materials.end();
|
||||
++itt)
|
||||
{
|
||||
for(auto tit = itt->textures.begin(); tit != itt->textures.end();
|
||||
++tit)
|
||||
{
|
||||
ss << " " << tit->name << std::endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(debugObject->type() == GTAObject::Vehicle) {
|
||||
GTAVehicle* vehicle = static_cast<GTAVehicle*>(debugObject);
|
||||
ss << "ID: " << vehicle->info.handling.ID << std::endl;
|
||||
|
Loading…
Reference in New Issue
Block a user