mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-10-30 15:30:28 +01:00
Replaces heightfield with Cesium Quantized Mesh format (TIN).
Full replacement, not hybrid - TIN is the only terrain format.
Implemented:
- Format: quantizedmeshformat.h, quantizedmeshreader.h
- Triangulator: terraincooker_tin.{h,cpp} using CDT
- Cooker: terraincook now generates TIN by default
- Loader: terraintileloader fully rewritten for TIN
- GPU pool: terraintilepool_tin (VBO/IBO per tile)
- Renderer interface: terrainclipmap.cppm updated
- Shaders: terrainclipmap_tin.{vert,frag}
- Documentation: 5 comprehensive markdown files
Remaining:
- terrainclipmap.cpp render() method (partial, needs completion)
- Build testing and integration
- See TIN_INTEGRATION_GUIDE.md for next steps
Stats: 2700+ lines new code, ~50% vertex reduction expected
24 lines
503 B
GLSL
24 lines
503 B
GLSL
// TIN Terrain Fragment Shader
|
|
// Minimal material lookup, no blending for now
|
|
|
|
#version 330 core
|
|
|
|
// Input from vertex shader
|
|
in vec2 vUV;
|
|
flat in uint vMaterial;
|
|
|
|
// Uniforms
|
|
uniform sampler2DArray ground; // Material texture array
|
|
|
|
// Output
|
|
out vec4 fragColor;
|
|
|
|
void main() {
|
|
// Sample material texture
|
|
// TODO: Add blending between materials for smooth transitions
|
|
vec3 texCoord = vec3(vUV, float(vMaterial));
|
|
vec4 color = texture(ground, texCoord);
|
|
|
|
fragColor = color;
|
|
}
|