Skip to content

Commit d0cd246

Browse files
committed
Calculate tiling at shader compile time instead of using uniforms
1 parent c6c159a commit d0cd246

File tree

5 files changed

+8
-14
lines changed

5 files changed

+8
-14
lines changed

Engine/Core/Entity.cpp

-3
Original file line numberDiff line numberDiff line change
@@ -917,9 +917,6 @@ void Entity::renderSingleModel() {
917917
void Entity::PassSurfaceMaterials() {
918918
glUseProgram(entityShader->id);
919919

920-
static int tilingLocation = shaderManager.GetUniformLocation(entityShader->id, "tiling");
921-
SetShaderValue(*entityShader, tilingLocation, surfaceMaterial.tiling, SHADER_UNIFORM_VEC2);
922-
923920
glUniform1i(shaderManager.GetUniformLocation(entityShader->id, "diffuseMapReady"), !surfaceMaterial.albedoTexturePath.empty());
924921
glUniform1i(shaderManager.GetUniformLocation(entityShader->id, "normalMapReady"), !surfaceMaterial.normalTexturePath.empty());
925922
glUniform1i(shaderManager.GetUniformLocation(entityShader->id, "roughnessMapReady"), !surfaceMaterial.roughnessTexturePath.empty());

Engine/Core/SaveLoad.cpp

-6
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ void SaveEntity(json& jsonData, const Entity& entity) {
4141
j["rotation"] = entity.rotation;
4242
j["relativePosition"] = entity.relativePosition;
4343
j["modelPath"] = entity.modelPath;
44-
j["tiling"] = entity.surfaceMaterial.tiling;
4544

4645
if (IsModelReady(entity.model) && entity.modelPath.empty())
4746
j["mesh_type"] = entity.ObjectType;
@@ -390,11 +389,6 @@ Entity* LoadEntity(const json& entityJson) {
390389
entity->setFlag(Entity::Flag::LOD_ENABLED, entityJson["lodEnabled"].get<bool>());
391390
}
392391

393-
if (entityJson.contains("tiling")) {
394-
entity->surfaceMaterial.tiling[0] = entityJson["tiling"][0].get<float>();
395-
entity->surfaceMaterial.tiling[1] = entityJson["tiling"][1].get<float>();
396-
}
397-
398392
if (entityJson.contains("mesh_type")) {
399393
entity->ObjectType = entityJson["mesh_type"].get<ObjectTypeEnum>();
400394
}

Engine/Editor/MaterialNodeEditor/MaterialShaderGenerator.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,9 @@ std::string GenerateMaterialShader(ChildMaterial& material) {
222222
if (!node) continue;
223223

224224
if (std::optional<Vector2Node*> vec2NodeData = material.GetNodeData<Vector2Node>(node->UUID)) {
225-
selectedEntity->surfaceMaterial.tiling[0] = vec2NodeData.value()->vec[0];
226-
selectedEntity->surfaceMaterial.tiling[1] = vec2NodeData.value()->vec[1];
225+
shaderStream << "#define TILING\n";
226+
shaderStream << "vec2 tiling = vec2(" << vec2NodeData.value()->vec[0] << ", "
227+
<< vec2NodeData.value()->vec[1] << ");\n";
227228
}
228229
}
229230
}

Engine/Lighting/SurfaceMaterial.hpp

-2
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,6 @@ struct SurfaceMaterial {
6262
SurfaceMaterialTexture heightTexture;
6363
SurfaceMaterialTexture metallicTexture;
6464
SurfaceMaterialTexture emissiveTexture;
65-
66-
float tiling[2] = { 1.0f, 1.0f };
6765
};
6866

6967
#endif // SURFACE_MAT_HPP

Engine/Lighting/shaders/lighting_fragment.glsl

+5-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ in vec3 fragNormal;
1010
// Input uniform values
1111
uniform vec4 ambientLight;
1212
uniform vec3 viewPos;
13-
uniform vec2 tiling = vec2(1.0, 1.0);
1413

1514
// PBR Textures
1615
uniform bool diffuseMapReady;
@@ -238,7 +237,12 @@ float Q_rsqrt(float number) {
238237
// [ INSERT GENERATED CODE BELOW ]
239238

240239
void main() {
240+
#ifdef TILING
241241
mediump vec2 texCoord = fragTexCoord * tiling;
242+
#else
243+
mediump vec2 texCoord = fragTexCoord;
244+
#endif
245+
242246
highp vec3 viewDir = normalize(viewPos - fragPosition);
243247
vec3 dp1 = dFdx(fragPosition);
244248
vec3 dp2 = dFdy(fragPosition);

0 commit comments

Comments
 (0)