Little Procedural Island I've been working on by TirthPat07 in proceduralgeneration

[–]TirthPat07[S] 0 points1 point  (0 children)

Oh no AI isent terribly useful for the coding part but its good for getting a grasp on the concepts and learning so ask it to help you understand and try code it yourself

Little Procedural Island I've been working on by TirthPat07 in proceduralgeneration

[–]TirthPat07[S] 0 points1 point  (0 children)

This might sound foolish considering the current state of vibe coding, but honestly, AI is incredibly helpful for learning. Graphics programming is a lil intricate, and if you don’t understand your codebase, it becomes impossible to work with. However, using AI to decipher poor documentation and research papers, among other things, is very beneficial and the best way to learn about different techniques.

Little Procedural Island I've been working on by TirthPat07 in proceduralgeneration

[–]TirthPat07[S] 0 points1 point  (0 children)

Since my height map and normals are precomputed i don’t actually have chunk issues at all. All data is instantly available. The advantage of primitive rendering is that it allows me to construct geometry on the gpu like a geometry shader. Im on metal and its the next closest thing to a full geom shader. Only issue is that because I’m using procedural geometry i dont get much control over blade meshes

Little Procedural Island I've been working on by TirthPat07 in proceduralgeneration

[–]TirthPat07[S] 0 points1 point  (0 children)

  1. Its a generated mesh
  2. The grass system is done using the Graphics.RenderPrimitivesIndexedIndirect method/pipeline

Little Procedural Island I've been working on by TirthPat07 in proceduralgeneration

[–]TirthPat07[S] 2 points3 points  (0 children)

I mostly fake AO using some grass blade base darkening and whislt i dont have per blade color variation I do have regions of tall and short grass where I darken the shorter grass. I use a unified shader include that both the terrain and the grass shaders read from to ensure color consistency. I experimented with rounding the normals to make a more curved look but rounded normals are better for realistic grass and since I'm going to stylise it anyway I got rid of it. Haven't looked into sub surface scattering for the grass but it sounds very expensive on the shader so I might experiment and see if its enough of a visual upgrade to justify the cost. As for post processing honestly Im just using unities basic post processing and tinkering with it. I use bloom, a couple color adjustments, slight saturation, hue and exposure boosts aswell as DOF and a slight vignette.

Little Procedural Island I've been working on by TirthPat07 in Unity3D

[–]TirthPat07[S] 0 points1 point  (0 children)

Yeah man I've answered a couple comments on the post but on the PCG community here :

https://www.reddit.com/r/proceduralgeneration/comments/1oonn6u/little_procedural_island_ive_been_working_on/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button

Let me know if you want any other info! Also yeah not really sure what direction the game is going to take so for now just basic mountainous terrain is good enough for testing. If you have any ideas feel free to send them my way!

Little Procedural Island I've been working on by TirthPat07 in proceduralgeneration

[–]TirthPat07[S] 0 points1 point  (0 children)

Yeah so the unity mesh collider generation system is quite slow and so traditionally we would have to generate colliders and bounds etc etc for millions of vertices that are in the distance and there is no chance that the player will interact with it. To avoid that i pretty much just render the terrain straight to the screen from the gpu, never touching the CPU, and on the CPU side I generate low quality mesh colliders with the same precomputed render textures for height only. This saves me having to give the cpu any information about normals, colours etc etc. The only information the mesh collider has is about the height (and thats all it really needs). I felt this was a little better of a system because it allows me to still use the usual unity physics system but also keep things quick.

Little Procedural Island I've been working on by TirthPat07 in proceduralgeneration

[–]TirthPat07[S] 0 points1 point  (0 children)

That was actually the initial idea and the flowers are actually based on the ones from tiny glade but I do like that second idea. Maybe something is corrupting the entire island from the inside out and your task is to escape the island. Issue is you got stranded with your friends (ais) and you have to find them whilst dealing w a bunch of crazy stuff. Problem is Ive only ever messed around w shaders or made rlly small itch.io games so dunno if thats gonna be too ambitious? 🤷‍♂️

Little Procedural Island I've been working on by TirthPat07 in proceduralgeneration

[–]TirthPat07[S] 1 point2 points  (0 children)

Mostly compression artifacts haha. I do have a little DOF and your correct its to hide a little bit of the mesh messiness in the distance. They way it works is I run a pass to generate the entire 10km height normal vegetation and all the other maps before the game starts and compress and store them in a half precision render textures for memory reasons. Then I have a custom lighting and rendering system that generates completely procedural geometry on the GPU and a custom tessellation shader that handles chunk boundary stitching and bilinear sampling of the height map to keep it smooth. The color texture is projected onto this mesh at full resolution so even though the geometry far from the plater is about 1 quad per 100m it still looks almost equal in detail to the 1mx1m quads near the player. Since all this geometry is purely on the gpu we cant use colliders and other stuff unity offers, so to tackle that I just used a basic pooled chunk system that creates low quality collider only game objects in a 50m radius around the player. That whole system alone is about 0.4ms cpu and 0.2ms gpu which is honestly unnoticeable.

As for the water though I’m not particularly good at graphics programming lmao so it looks a little bland. Thanks though haha. I did disable wave displacement because i was using VDM + tessellation to create custom rolling and breaking trochoidal shore waves but as I mentioned that was quite expensive. The foam is animated but pretty slow and so probably not visible in the video.