]> git.lizzy.rs Git - dragonblocks_alpha.git/commitdiff
Random texture offset for stone
authorElias Fleckenstein <eliasfleckenstein@web.de>
Thu, 19 Aug 2021 01:23:12 +0000 (03:23 +0200)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Thu, 19 Aug 2021 01:23:12 +0000 (03:23 +0200)
src/biome.c
src/biome.h
src/client/client_node.c
src/client/texture.c

index f17ad0e517f74141192b5256b8801f7619a28c4b..54444fba2ba001dea8504e46946c54c3273444d6 100644 (file)
@@ -1,9 +1,9 @@
 #include "biome.h"
 #include "perlin.h"
 
-int seed = 0;
+int seed = 1;
 
 f64 get_wetness(v3s32 pos)
 {
-       return smooth2d((((u32) 1 << 31) + pos.x) / 128.0, (((u32) 1 << 31) + pos.z) / 128.0, 0, 3) * 0.5 + 0.5;
+       return smooth2d((((u32) 1 << 31) + pos.x) / 128.0, (((u32) 1 << 31) + pos.z) / 128.0, 0, seed + SO_WETNESS) * 0.5 + 0.5;
 }
index 1529f5948fbad29ea47d0ffd13413e1346b50b09..7fe388d59b4713821358eccc34ed195865630d07 100644 (file)
@@ -11,6 +11,8 @@ typedef enum
        SO_BOULDER_CENTER,
        SO_BOULDER,
        SO_WETNESS,
+       SO_TEXTURE_OFFSET_S,
+       SO_TEXTURE_OFFSET_T,
 } SeedOffset;
 
 f64 get_wetness(v3s32 pos);
index 75b740cb52a0763c770c3e98be5b00302bc8d3d1..434d8b62291b1840bb5ff7324b37ff3109476ca8 100644 (file)
@@ -2,6 +2,7 @@
 #include "client/client.h"
 #include "client/client_node.h"
 #include "node.h"
+#include "perlin.h"
 
 static void render_state_biome(v3s32 pos, __attribute__((unused)) MapNode *node, Vertex3D *vertex)
 {
@@ -14,6 +15,12 @@ static void render_state_biome(v3s32 pos, __attribute__((unused)) MapNode *node,
        vertex->color.v = 1.0f;
 }
 
+static void render_texture_offset(v3s32 pos, __attribute((unused)) MapNode *node, Vertex3D *vertex)
+{
+       vertex->textureCoordinates.s += smooth2d(((u32) 1 << 31) + pos.x, ((u32) 1 << 31) + pos.z, 0, seed + SO_TEXTURE_OFFSET_S);
+       vertex->textureCoordinates.t += smooth2d(((u32) 1 << 31) + pos.x, ((u32) 1 << 31) + pos.z, 0, seed + SO_TEXTURE_OFFSET_T);
+}
+
 ClientNodeDefintion client_node_definitions[NODE_UNLOADED] = {
        // invalid
        {
@@ -43,7 +50,7 @@ ClientNodeDefintion client_node_definitions[NODE_UNLOADED] = {
        {
                .texture_path = RESSOURCEPATH "textures/stone.png",
                .texture = NULL,
-               .render = NULL,
+               .render = &render_texture_offset,
        },
        // snow
        {
index b0c615cdc441d838ca8cae5e953c643726694db3..89bfc0a70389ad689605bc580d6647efcceb316d 100644 (file)
@@ -35,8 +35,8 @@ Texture *texture_create(unsigned char *data, int width, int height, GLenum forma
 
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
 
        glTexImage2D(GL_TEXTURE_2D, 0, format, texture->width, texture->height, 0, format, GL_UNSIGNED_BYTE, data);
        glGenerateMipmap(GL_TEXTURE_2D);