Jump to content

shadmar

Members
  • Posts

    3,618
  • Joined

  • Last visited

Everything posted by shadmar

  1. shadmar

    DA

  2. shadmar

    Terrain Deformation

    Cool, have to try this
  3. Looks like a good approach, I guess one type of blurring will be enough, but I cannot think of a good reason to use any other type than downsizing. What about matrices? Can you access them like before? projection, camara and normal matrix. Also getting buffers like normal,position,depth.
  4. They are made by @tjheldna so it's not my permission to give. But you can use the shaders to your liking if not otherwise is staded in them.
  5. There are water shaders in Dino Land you can steal (whole game is unencrypted) I believe the rest of the sahders are also there.
  6. Here is the code for terrain.lua --Get the primary display local displaylist = ListDisplays() local display = displaylist[1]; if display == nil then RuntimeError("Primary display not found.") end local displayscale = display:GetScale() --Create a window local window = CreateWindow(display, "Terrain", 0, 0, math.min(1280 * displayscale.x, display.size.x), math.min(720 * displayscale.y, display.size.y), WINDOW_TITLEBAR + WINDOW_CENTER) --Create a rendering framebuffer local framebuffer = CreateFramebuffer(window); --Create a world local world = CreateWorld() --Create a camera local camera = CreateCamera(world) --camera:SetClearColor(0.25) camera:Turn(35,0,0) camera:Move(0,12,-33) --Create a light local light = CreateLight(world,LIGHT_DIRECTIONAL) light:SetRotation(45,-55,0) light:SetColor(4,4,4,1) --Create terrain local terrain = CreateTerrain(world,256,256) terrain:SetScale(256,200,256) --Add a material layer local mtl = LoadMaterial("Materials/Dirt/dirt01.mat") local layerID = terrain:AddLayer(mtl) terrain:SetMaterial(layerID, 0, 0, 256, 256, 1) --PERLIN NOISE local p = {} local permutation = {151,160,137,91,90,15, 131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23, 190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33, 88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166, 77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244, 102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196, 135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123, 5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42, 223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9, 129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228, 251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107, 49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254, 138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180 } for i = 0, 255 do p[i] = permutation[i + 1] p[256 + i] = permutation[i + 1] end local function fade(t) return t * t * t * (t * (t * 6 - 15) + 10) end local function lerp(t, a, b) return a + t * (b - a) end local function grad(hash, x, y, z) local h, u, v = hash % 16 if h < 8 then u = x else u = y end if h < 4 then v = y elseif h == 12 or h == 14 then v = x else v = z end local r if h % 2 == 0 then r = u else r = -u end if h % 4 == 0 then r = r + v else r = r - v end return r end local function perlin(x, y, z) y = y or 0 z = z or 0 local X = math.floor(x % 255) local Y = math.floor(y % 255) local Z = math.floor(z % 255) x = x - math.floor(x) y = y - math.floor(y) z = z - math.floor(z) local u = fade(x) local v = fade(y) local w = fade(z) A = p[X ] + Y AA = p[A ] + Z AB = p[A + 1] + Z B = p[X + 1] + Y BA = p[B ] + Z BB = p[B + 1] + Z return lerp(w, lerp(v, lerp(u, grad(p[AA ], x , y , z ), grad(p[BA ], x - 1, y , z )), lerp(u, grad(p[AB ], x , y - 1, z ), grad(p[BB ], x - 1, y - 1, z ))), lerp(v, lerp(u, grad(p[AA + 1], x , y , z - 1), grad(p[BA + 1], x - 1, y , z - 1)), lerp(u, grad(p[AB + 1], x , y - 1, z - 1), grad(p[BB + 1], x - 1, y - 1, z - 1)))) end function fbm(x, y, z, octaves, lacunarity, gain) octaves = octaves or 8 lacunarity = lacunarity or 2 gain = gain or 0.5 local amplitude = 1.0 local frequency = 1.0 local sum = 0.0 for i = 0, octaves do sum = sum + amplitude * perlin(x * frequency, y * frequency, z * frequency) amplitude = amplitude * gain frequency = frequency * lacunarity end return sum end --- ### This should match terrain created local terrainsize=256 local octaves=12 -- more is finer noise but slower local lacunarity=1.9 -- size of noise local gain=0.6 -- height gain for i=-127,127 do for j=-127,127 do local noise=fbm(i/terrainsize, 11, j/terrainsize, octaves, lacunarity, gain) terrain:SetElevation(127+i,127+j, 15+noise*20) end end --Update normals of modified and neighboring points terrain:UpdateNormals(0, 0, 256, 256) --Add another layer mtl = LoadMaterial("Materials/Rough-rockface1.json") rockLayerID = terrain:AddLayer(mtl) --Apply layer to sides of hill for x=-127,127 do for y=-127,127 do slope = terrain:GetSlope(127 + x, 127 + y) alpha = math.min(slope / 15, 1.0) terrain:SetMaterial(rockLayerID, 127 + x, 127 + y, alpha) end end --Main loop while window:Closed() == false do world:Update() world:Render(framebuffer) end
  7. Quick perlin noise example, but there is a seam issue you can see:
  8. I have no idea why it's not in the library, but here you go: Edit: Attachment moved here: https://drive.google.com/drive/folders/1oRRGES10bTlqsE18Q13metVpevmgy2qd?usp=sharing
  9. unzip it, it believe it is unencrypted.
  10. If you dismantle the game Dino Land, it has a raymarched ocean you can use.
  11. It looks like there is less geometry in the second picture. Missing a stack on the right side.
  12. Ah I'm sorry, I meant in the Leadwerks Editor, clicking the sphere primitive from button or menu. If you create a sphere, the editor will crash.
  13. I still get crash when making a sphere.
  14. Launching a game 4.5 game (new project) via editor crashes, but clicking the exe directly works.
  15. If I want to make a New project , the OK button is greyed out. Edit: can't start with a number.
  16. I cant make sphere primitive. EXCEPTION_ACCESS_VIOLATION
  17. That is an ancient graphic card. It does not support OpenGL4, only 2.1.
×
×
  • Create New...