Tune parameters. Add exponents

This commit is contained in:
Mat 2014-07-10 04:08:19 +01:00
parent e78aeef9fb
commit b1fee3d90c
2 changed files with 24 additions and 24 deletions

View File

@ -1,4 +1,4 @@
riverdev 0.4.1 by paramat riverdev 0.4.2 by paramat
For latest stable Minetest back to 0.4.8 For latest stable Minetest back to 0.4.8
Depends default Depends default
Licenses: code WTFPL Licenses: code WTFPL

View File

@ -1,4 +1,4 @@
-- riverdev 0.4.1 by paramat -- riverdev 0.4.2 by paramat
-- For latest stable Minetest and back to 0.4.8 -- For latest stable Minetest and back to 0.4.8
-- Depends default -- Depends default
-- License: code WTFPL -- License: code WTFPL
@ -8,19 +8,20 @@
local YMIN = -33000 local YMIN = -33000
local YMAX = 33000 local YMAX = 33000
local YWATER = 1 local YWATER = 1
local YSAND = 4 -- Top of beach local YSAND = 4 -- Top of beach y
local YTER = -64 -- Terrain zero level, average seabed level local YTER = -64 -- Deepest seabed y
local TERSCA = 512 -- Terrain vertical scale in nodes local TERSCA = 512 -- Terrain vertical scale in nodes
local BASAMP = 0.3 -- Base amplitude. Ridge network structure local BASAMP = 0.3 -- Base amplitude. Ridge network structure
local MIDAMP = 0.1 -- Mid amplitude. River valley structure local MIDAMP = 0.05 -- Mid amplitude. River valley structure
local TERAMP = 0.6 -- Primary terrain amplitude. Stream / path valley structure local TERAMP = 0.65 -- 3D noise terrain amplitude. Path valley structure
local TSTONE = 0.02 local TSTONE = 0.02
local TRIVER = -0.02 local TRIVER = -0.018
local TRSAND = -0.025 local TRSAND = -0.02
local TPFLO = 0.02 -- Width of flora clearing around paths
local APPCHA = 1 / 4 ^ 2 -- Appletree maximum chance per grass node. 1 / n ^ 2 where n = minimum average distance between flora local APPCHA = 1 / 4 ^ 2 -- Appletree maximum chance per grass node. 1 / n ^ 2 where n = average minimum distance between flora
-- 3D noise for terrain -- 3D noise for terrain
@ -33,15 +34,15 @@ local np_terrain = {
persist = 0.67 persist = 0.67
} }
-- 2D noise for mid terrain -- 2D noise for mid terrain / river
local np_mid = { local np_mid = {
offset = 0, offset = 0,
scale = 1, scale = 1,
spread = {x=768, y=768, z=768}, spread = {x=512, y=512, z=512},
seed = 85546, seed = 85546,
octaves = 5, octaves = 5,
persist = 0.5 persist = 0.4
} }
-- 2D noise for base terrain -- 2D noise for base terrain
@ -49,7 +50,7 @@ local np_mid = {
local np_base = { local np_base = {
offset = 0, offset = 0,
scale = 1, scale = 1,
spread = {x=3072, y=3072, z=3072}, spread = {x=2048, y=2048, z=2048},
seed = -990054, seed = -990054,
octaves = 3, octaves = 3,
persist = 0.4 persist = 0.4
@ -60,7 +61,7 @@ local np_base = {
local np_patha = { local np_patha = {
offset = 0, offset = 0,
scale = 1, scale = 1,
spread = {x=384, y=384, z=384}, spread = {x=512, y=512, z=512},
seed = 7000023, seed = 7000023,
octaves = 3, octaves = 3,
persist = 0.4 persist = 0.4
@ -71,9 +72,9 @@ local np_patha = {
local np_pathb = { local np_pathb = {
offset = 0, offset = 0,
scale = 1, scale = 1,
spread = {x=384, y=384, z=384}, spread = {x=512, y=512, z=512},
seed = 23, seed = 23,
octaves = 4, octaves = 3,
persist = 0.4 persist = 0.4
} }
@ -82,10 +83,10 @@ local np_pathb = {
local np_tree = { local np_tree = {
offset = 0, offset = 0,
scale = 1, scale = 1,
spread = {x=192, y=192, z=192}, spread = {x=256, y=256, z=256},
seed = 133338, seed = 133338,
octaves = 3, octaves = 3,
persist = 0.5 persist = 0.6
} }
-- Stuff -- Stuff
@ -178,17 +179,16 @@ minetest.register_on_generated(function(minp, maxp, seed)
local n_zprepathb = nvals_pathb[(nixz - sidelen - 1)] local n_zprepathb = nvals_pathb[(nixz - sidelen - 1)]
local n_terrain = (nvals_terrain[nixyz] + 2) / 2 local n_terrain = (nvals_terrain[nixyz] + 2) / 2
local n_absmid = math.abs(nvals_mid[nixz]) local n_absmid = (math.abs(nvals_mid[nixz])) ^ 0.8
local n_absbase = math.abs(nvals_base[nixz]) local n_absbase = (math.abs(nvals_base[nixz])) ^ 0.8
local n_invbase = (1 - n_absbase) local n_invbase = (1 - n_absbase)
local grad = (YTER - y) / TERSCA local grad = (YTER - y) / TERSCA
local densitybase = n_invbase * BASAMP + grad local densitybase = n_invbase * BASAMP + grad
local densitymid = n_absmid * MIDAMP + densitybase local densitymid = n_absmid * MIDAMP + densitybase
local teramp = n_invbase * TERAMP local density = n_terrain * n_invbase * n_absmid * n_abspatha ^ 1.2 * n_abspathb ^ 1.2 * TERAMP + densitymid
local density = n_terrain * teramp * n_absmid * (0.1 + n_abspatha * n_abspathb) + densitymid
local tstone = TSTONE * (1 + grad) local tstone = TSTONE * (1 + grad * 2)
local triver = TRIVER * n_absbase local triver = TRIVER * n_absbase
local trsand = TRSAND * n_absbase local trsand = TRSAND * n_absbase
@ -270,7 +270,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
elseif density < 0 and under[si] ~= 0 then -- air above surface elseif density < 0 and under[si] ~= 0 then -- air above surface
if under[si] == 1 and nodidu ~= c_path then if under[si] == 1 and nodidu ~= c_path then
if math.random() < APPCHA * n_tree if math.random() < APPCHA * n_tree
and n_abspatha > 0.03 and n_abspathb > 0.03 then and n_abspatha > TPFLO and n_abspathb > TPFLO then
riverdev_appletree(x, y, z, area, data) riverdev_appletree(x, y, z, area, data)
else else
data[viu] = c_grass data[viu] = c_grass