+ for (int i = 0; i < 14; i++){
+ shaders_header += "#define ";
+ shaders_header += drawTypes[i];
+ shaders_header += " ";
+ shaders_header += itos(i);
+ shaders_header += "\n";
+ }
+
+ static const char* materialTypes[] = {
+ "TILE_MATERIAL_BASIC",
+ "TILE_MATERIAL_ALPHA",
+ "TILE_MATERIAL_LIQUID_TRANSPARENT",
+ "TILE_MATERIAL_LIQUID_OPAQUE",
+ "TILE_MATERIAL_WAVING_LEAVES",
+ "TILE_MATERIAL_WAVING_PLANTS"
+ };
+
+ for (int i = 0; i < 6; i++){
+ shaders_header += "#define ";
+ shaders_header += materialTypes[i];
+ shaders_header += " ";
+ shaders_header += itos(i);
+ shaders_header += "\n";
+ }
+
+ shaders_header += "#define MATERIAL_TYPE ";
+ shaders_header += itos(material_type);
+ shaders_header += "\n";
+ shaders_header += "#define DRAW_TYPE ";
+ shaders_header += itos(drawtype);
+ shaders_header += "\n";
+
+ if (g_settings->getBool("generate_normalmaps")){
+ shaders_header += "#define GENERATE_NORMALMAPS\n";
+ shaders_header += "#define NORMALMAPS_STRENGTH ";
+ shaders_header += ftos(g_settings->getFloat("normalmaps_strength"));
+ shaders_header += "\n";
+ float sample_step;
+ int smooth = (int)g_settings->getFloat("normalmaps_smooth");
+ switch (smooth){
+ case 0:
+ sample_step = 0.0078125; // 1.0 / 128.0
+ break;
+ case 1:
+ sample_step = 0.00390625; // 1.0 / 256.0
+ break;
+ case 2:
+ sample_step = 0.001953125; // 1.0 / 512.0
+ break;
+ default:
+ sample_step = 0.0078125;
+ break;
+ }
+ shaders_header += "#define SAMPLE_STEP ";
+ shaders_header += ftos(sample_step);
+ shaders_header += "\n";
+ }
+