Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

122 Neutral

About Mythix

  • Rank
  1. @Waterlimon   I'm actually using C# with XNA. It doesn't support Geometry Shaders. Thanks though.
  2. @Paradigm Shifter   Thank you. That's exactly what I wanted and it's working great.
  3. Hello all,   I'm trying to find out some opinions related to rendering techniques for a procedural minecraft like terrain system made of cubes. It's just a toy and a learning experience for me.   So, my question for the community is how to store/use textures in regards to the vertices in question. It'd be fewer vertices for certain if I merge adjacent faces that would use the same image. The only way I know to do this without a buffer per image would be to abuse the wrapping capabilities of the graphics card by storing faces in strips. Then I could use a vertical strip and a horizontal strip of possible face images as two atlases depending on if the faces are merged vertically or horizontally.   I could also simply use a typical atlas map with 4 vertices per face. It's simple, works well, and there's no tricks going on that might result in more texture swapping than desirable.     Any other possibilities anyone else knows of that might be a performance increase? If nothing else, I'm considering storing a vertex buffer per face normal (that's 6 buffers) per chunk and rendering those individually to perform a software like backface culling. Depending on the chunk size, that might be a decrease or an increase in performance (overhead of draw calls).. not too sure.
  4. In a 2D grid, I have the center location of all tiles on the map in an array. I also have the character's facing ray (the starting position is the player's position). The character can rotate 360 degrees.   My goal would be to sort the array by the distance they are to that ray in a sweeping motion from the character's position outwards.   If you had two second hands on a clock set to noon, one going clockwise and the other going counter clockwise, the array would be:   12, 1, 11, 2, 10, 3, 9, 4, 8, 5, 7, 6   The only difference between that and what I'm hoping for is to do it on a 2D grid of tiles rather than just the numbers on a clock :P. Well, that and I'd hope if the lines intersect multiple tiles that I could add those tiles to the array based on their distance to the player.   Can someone point me in the right direction for this, perhaps even a term to describe the concept? If I'm not describing it well enough, please let me know and I'll do my best to draw a picture.
  5. My collision detection seems to work well. Responding to it, however, does not. My terrain is made of cubes. My player is made of a cube. They are all axis aligned. As my terrain is divided up into cubes, I simply check to see if every corner of the player's cube is in empty space or a solid block. If even one is in a solid block, then I know a collision has occurred. I'm wanting to slide the player along the plane of the collision, but I'm having some difficulty understanding how to identify the plane to slide on and how. Everything I've tried so far seems to have issues determining the exact plane to slide on/propel from. As the picture below demonstrates, from one frame to the next, if the red square moved from bottom up as the arrow points, I need something to show that the bottom face of the black square is what was collided with (or the top face of the red square).  
  6. Mythix

    Procedural Terrain and Biomes

    I'm horrible with explaining things, but I'll try.   I'm using value noise with about 4 octaves as my mask. I then set a biome up by specifying values for it's own noise call with what I'm calling a location value and an impact value. Per biome, I take (fImpact - abs(fMask - fLocation)) / fImpact. That gives me a scaling percentage of the biome's "strength" around the fLocation value.   If my location was .2 and my impact was .15, with noise scaling from 0 to 1, it'd look like this:   Mask - Biome Strength 0.10 - 0.33 0.15 - 0.67 0.20 - 1.00 0.25 - 0.67 0.30 - 0.33   I then call the noise function for said biome, multiply it by the biome strength, and add that to my total height multiplier. Once I've ran through each biome (only calculating the noise call for that biome if the strength is >0), I take that sum and multiply it by the max height of my terrain to get the height of that point.   I'm also storing per point on the heightmap what biomes played a part in that point in descending order so that I can use those values for details of the terrain (trees, sand, snow, or whatever else).   It certainly wouldn't be difficult to scale up the strengths to ensure 100% contribution based on how many biomes played a part at that point, but I'm pretty happy with the results I'm getting with a pretty even spread at the moment (with only a little overlap).
  7. Mythix

    Procedural Terrain and Biomes

    Sorry FLeBlanc, that's a bit too advanced for me. If I get something working in a much larger scale, I'll probably come back to this some day, but I'm betting that'll be a while.   I went ahead with the weighted approach Kylotan, which is exactly as my code showed above, but I did it in a much more elegant manner. I now have a single function to create biomes and another to draw upon them as needed.   I'm having a few speed issues at the moment (more like over optimizing issues on my end, lol), but if I get past them I might throw a screenshot out later in case anyone is curious what I'm tinkering with.   Thanks for the help!
  8. Hello all,   I'm working on a terrain generator. Through multiple noise functions, I'm able to create many kinds of terrain I like, but I'm having a bit of difficulty joining them together in a seamless fashion.    My first thought was to use a single low level noise call (calling it the mask) and then I could simply say things like: if (returnVal < .1) GenerateBiome1(); if (returnVal < .2) GenerateBiome2(); if (returnVal < .3) GenerateBiome3(); and so on...   The issue here is that the height of the terrain doesn't blend together very well. If biome 1 was more mountainous and biome 2 was flat land, it's a drastic switch from one to the other and it looks atrocious.   My next thought was to attempt blending by giving a 'strength' to each biome based on what my mask noise returns. In C# code, it looks something like this at the moment: tatic public float GetHeight(float X, float Z) {     float fRollingHills_Location = .25f, fRollingHills_Impact = .5f, fRollingHills = 0;     float fMountains_Location = .75f, fMountains_Impact = .5f, fMountains = 0;     float fMask = Game1.GetNoise2(0, X, Z, .01f);     float fRollingHills_Strength = (fRollingHills_Impact - Math.Abs(fMask - fRollingHills_Location)) / fRollingHills_Impact;     float fMountains_Strength = (fMountains_Impact - Math.Abs(fMask - fMountains_Location)) / fMountains_Impact;     if (fRollingHills_Strength > 0) fRollingHills = fRollingHills_Strength * (Game1.GetNoise2(0, X, Z, .02f) * 10f + 10f);     if (fMountains_Strength > 0) fMountains = fMountains_Strength * (Game1.GetNoise2(0, X, Z, .05f) * 25f + 10f);     return fRollingHills + fMountains; }     The issue I have here is that even for only two biomes, it's pretty important for me to manually choose the "location" and "impact" values to ensure I'm getting some combination of strengths to total 100% by the time it returns a value (if not, I get things like giant cliffs making the borders from one biome another ugly and obvious). I'm also not entirely sure I understand it just yet, but the way in which I multiply the noise for a height looks like it needs to change to handle multiple biomes blending smoothly.   Does anyone have any experience in this and can either help correct me, explain it better, explain a whole new method to do this that might be easier, or just point me to some good resources on the subject? While I've managed a few good looking maps, if I try to go up to 10 or more biomes, without having more automation in my code which I think might be just beyond me with this method, I don't think I'll be able to succeed.     Thanks, Mythix
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!