aboutsummaryrefslogtreecommitdiff
path: root/src/mapblock_mesh.cpp
Commit message (Expand)AuthorAge
...
* Fix remnants of s32 enable_shadersKahrl2013-09-04
* Dont crash if facedir > 23PilzAdam2013-08-10
* Fix crack overlay for animated texturesKahrl2013-08-05
* Fix light issue in 6d facedir.RealBadAngel2013-07-21
* Clean up bumpmap code a bitkwolekr2013-07-12
* Fix many formspec menu bugssapier2013-07-07
* Add texture bumpmapping feature.RealBadAngel2013-07-04
* Remove texture atlas / AtlasPointer, rename getTextureRaw to getTextureKahrl2013-07-02
* Remove useless recalculation of bounding box (mapblock_mesh)Esteban I. Ruiz Moreno2013-06-18
* Removed a redundant step which degraded performancesweetbomber2013-06-15
* Remove 'Meshbuffer ran out of indices' limitationKahrl2013-05-06
* Add option to use texture alpha channelkwolekr2013-04-23
* 6d facedirRealBadAngel2013-03-23
* Migrate to STL containers/algorithms.Ilya Zhuravlev2013-03-11
* Update Copyright YearsSfan52013-02-24
* Change Minetest-c55 to MinetestPilzAdam2013-02-24
* Try to add a bit of topside brightness when not using shadersPerttu Ahola2012-12-02
* Handle day-night transition in shader and make light sources brighter when sh...Perttu Ahola2012-12-02
* Fix tile MaterialType to make sense and make lava surface be shader'd lower l...Perttu Ahola2012-12-02
* Implement a global shader parameter passing system and useful shadersPerttu Ahola2012-12-02
* ShaderSource and silly example shadersKahrl2012-12-02
* Fix mesh glitches on MapBlock boundariesPerttu Ahola2012-11-27
* Rotate facedir-rotated top and bottom textures too, and re-implement nodebox ...Perttu Ahola2012-07-21
* Properly and efficiently use split utility headersPerttu Ahola2012-06-17
* Add desynchronize_mapblock_texture_animation setting and improve minetest.con...Perttu Ahola2012-06-16
* Node texture animationPerttu Ahola2012-06-16
* Switch the license to be LGPLv2/later, with small parts still remaining as GP...Perttu Ahola2012-06-05
* Fix MSVC build (pow type overload stuff)Perttu Ahola2012-05-31
* Tune smooth lighting a bitPerttu Ahola2012-05-20
* Make lava brighter by showing light sources at their full emitted light levelPerttu Ahola2012-04-08
* MapBlockMesh, mesh animation system, urgent mesh updates, athmospheric light,...Kahrl2012-03-15
* Node placement / mineral / serialization / iron freq / node_dig callbackKahrl2012-01-22
* The huge item definition and item namespace unification patch (itemdef), see ...Kahrl2012-01-12
* Clean mapnode.h and fix other files accordinglyPerttu Ahola2011-11-29
* GameDef compilesPerttu Ahola2011-11-29
* Create framework for getting rid of global definitions of node/tool/item/what...Perttu Ahola2011-11-29
* Move ContentFeatures to mapnode_contentfeatures.{h,cpp} and clean stuffPerttu Ahola2011-11-29
* Fix water-glass and water-lava surfacesPerttu Ahola2011-11-08
* Improve rendering and fix tiling in mesh generationPerttu Ahola2011-10-18
* Fix some "Conditional jump or move depends on uninitialised value(s)" valgrin...Perttu Ahola2011-10-15
* Header file tweaking; mainly for speedPerttu Ahola2011-10-12
* made shadows less bluePerttu Ahola2011-07-24
* merged jungle and bluish shadowsPerttu Ahola2011-07-23
|\
| * Made dark places tint slightly in bluePerttu Ahola2011-07-23
* | extended content-type rangePerttu Ahola2011-07-23
|/
* more reorganizing of map codePerttu Ahola2011-06-26
* mapgen stuffPerttu Ahola2011-06-25
* Moved stuff from mapblock{h,cpp} to mapblock_mesh.{h,cpp} and content_mapbloc...Perttu Ahola2011-06-17
l num">0x7fffffff - 1; const static s32 RANDOM_MAX = 0x7fffffff; const static u32 RANDOM_RANGE = 0xffffffff; PcgRandom(u64 state=0x853c49e6748fea9bULL, u64 seq=0xda3e39cb94b95bdbULL); void seed(u64 state, u64 seq=0xda3e39cb94b95bdbULL); u32 next(); u32 range(u32 bound); s32 range(s32 min, s32 max); void bytes(void *out, size_t len); s32 randNormalDist(s32 min, s32 max, int num_trials=6); private: u64 m_state; u64 m_inc; }; #define NOISE_FLAG_DEFAULTS 0x01 #define NOISE_FLAG_EASED 0x02 #define NOISE_FLAG_ABSVALUE 0x04 //// TODO(hmmmm): implement these! #define NOISE_FLAG_POINTBUFFER 0x08 #define NOISE_FLAG_SIMPLEX 0x10 struct NoiseParams { float offset; float scale; v3f spread; s32 seed; u16 octaves; float persist; float lacunarity; u32 flags; NoiseParams() { offset = 0.0f; scale = 1.0f; spread = v3f(250, 250, 250); seed = 12345; octaves = 3; persist = 0.6f; lacunarity = 2.0f; flags = NOISE_FLAG_DEFAULTS; } NoiseParams(float offset_, float scale_, v3f spread_, s32 seed_, u16 octaves_, float persist_, float lacunarity_, u32 flags_=NOISE_FLAG_DEFAULTS) { offset = offset_; scale = scale_; spread = spread_; seed = seed_; octaves = octaves_; persist = persist_; lacunarity = lacunarity_; flags = flags_; } }; // Convenience macros for getting/setting NoiseParams in Settings as a string // WARNING: Deprecated, use Settings::getNoiseParamsFromValue() instead #define NOISEPARAMS_FMT_STR "f,f,v3,s32,u16,f" //#define getNoiseParams(x, y) getStruct((x), NOISEPARAMS_FMT_STR, &(y), sizeof(y)) //#define setNoiseParams(x, y) setStruct((x), NOISEPARAMS_FMT_STR, &(y)) class Noise { public: NoiseParams np; int seed; u32 sx; u32 sy; u32 sz; float *noise_buf; float *gradient_buf; float *persist_buf; float *result; Noise(NoiseParams *np, int seed, u32 sx, u32 sy, u32 sz=1); ~Noise(); void setSize(u32 sx, u32 sy, u32 sz=1); void setSpreadFactor(v3f spread); void setOctaves(int octaves); void gradientMap2D( float x, float y, float step_x, float step_y, int seed); void gradientMap3D( float x, float y, float z, float step_x, float step_y, float step_z, int seed); float *perlinMap2D(float x, float y, float *persistence_map=NULL); float *perlinMap3D(float x, float y, float z, float *persistence_map=NULL); inline float *perlinMap2D_PO(float x, float xoff, float y, float yoff, float *persistence_map=NULL) { return perlinMap2D( x + xoff * np.spread.X, y + yoff * np.spread.Y, persistence_map); } inline float *perlinMap3D_PO(float x, float xoff, float y, float yoff, float z, float zoff, float *persistence_map=NULL) { return perlinMap3D( x + xoff * np.spread.X, y + yoff * np.spread.Y, z + zoff * np.spread.Z, persistence_map); } private: void allocBuffers(); void resizeNoiseBuf(bool is3d); void updateResults(float g, float *gmap, float *persistence_map, size_t bufsize); }; float NoisePerlin2D(NoiseParams *np, float x, float y, int seed); float NoisePerlin3D(NoiseParams *np, float x, float y, float z, int seed); inline float NoisePerlin2D_PO(NoiseParams *np, float x, float xoff, float y, float yoff, int seed) { return NoisePerlin2D(np, x + xoff * np->spread.X, y + yoff * np->spread.Y, seed); } inline float NoisePerlin3D_PO(NoiseParams *np, float x, float xoff, float y, float yoff, float z, float zoff, int seed) { return NoisePerlin3D(np, x + xoff * np->spread.X, y + yoff * np->spread.Y, z + zoff * np->spread.Z, seed); } // Return value: -1 ... 1 float noise2d(int x, int y, int seed); float noise3d(int x, int y, int z, int seed); float noise2d_gradient(float x, float y, int seed, bool eased=true); float noise3d_gradient(float x, float y, float z, int seed, bool eased=false); float noise2d_perlin(float x, float y, int seed, int octaves, float persistence, bool eased=true); float noise2d_perlin_abs(float x, float y, int seed, int octaves, float persistence, bool eased=true); float noise3d_perlin(float x, float y, float z, int seed, int octaves, float persistence, bool eased=false); float noise3d_perlin_abs(float x, float y, float z, int seed, int octaves, float persistence, bool eased=false); inline float easeCurve(float t) { return t * t * t * (t * (6.f * t - 15.f) + 10.f); } float contour(float v); #endif