Jump to content
Caveman (C) 2000-2014 Rockland Software Productions
The placeholder graphics for prairie started out the same as tall grass with 50% smaller grass plants. Looked like a cabbage patch or something. But that was all that was needed for gameplay purposes. when it came time for final graphics, i downloaded a bunch of reference photos, and more photos of wildflowers than i care to recall. then i made some new prairie grass and prairie plant textures. then i made the prairie code use the new textures. then i started decreasing the spacing between plants. down from 5 feet to 3 feet, even 2 feet (62500 plant meshes visible at once). had to keep increasing the max number of meshes in a 300x300 terrain chunk to do it, first from 10,000 to 20,000, then 20,000 to 30,000. by the time i was at one plant every 2 feet, with 62500 plants visible (with no instancing) framerate was starting to suffer. looked great, but too slow.
so i took time out and played some skyrim. well, i intended to play, but instead found myself wandering around looking at how they drew things. one thing i noticed was that the plant meshes in skyrim, unlike oblivion, are all "bent". instead of having a plant mesh made of intersecting flat quads, they use intersecting pairs of quads that are not co-planar (ie a bent or folded quad). the result is much less "disappaering" of sections of a plant as you look at them edge on.
The i started thinking about batch calls and number of triangles rasterized. I realized that my bottleneck was most likely rasterizing 62,500 meshes of 8 quads each (1,000,000 visible triangles with HEAVY ovedraw). so i started thinking about how to make a simpler mesh.
well one triangle wouldn't really work, because either the top or the bottom of the plant would be clipped by the triangle.
a single quad wouldn't work, because of the edge on "disappearing" issue.
and billboards would turn when you moved.
so what i came up with was 2 quads standing up, intersecting at right angles. then i added the Skyrim "bend" by twisting the top of the mesh by 45 degrees.
this cut my mesh from 16 triangles down to just 4, which meant i could draw them twice as close together and still use the same number of triangles total.
so i added the new mesh, played a bit with the scale and spacing and came up with the results seen above.
the grass is a little dark, but that's easily tweaked in paint.net.
the upper image is actual prairie land, with trees and buffalo in the background.
the lower image is the screenshot of the new prairie terrain in the game.
one of the big challenges was getting the grass big enough to look thick and lush, without being too tall, or looking wide yet flat.
|Original File Size||245943|
|Sections Found||ANY_TAG, IFD0|
|HTML Sizes||width="800" height="1000"|
|Byte Order Motorola||TRUE|
GameDev.net™, the GameDev.net logo, and GDNet™ are trademarks of GameDev.net, LLC.