1 1 effective gpu-based synthesis and editing of realistic heightfields giliam j.p. de carpentier...
TRANSCRIPT
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
11
Computer Graphics and CAD/CAM GroupFaculty of Electrical Engineering, Mathematics and Computer ScienceDelft University of Technology
W!GamesAmsterdam
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
22
• Introduction• Analysis• Approach• Procedural brushes• Editing on the GPU• Terrain rendering• Demo• Conclusions
• Introduction• Analysis• Approach• Procedural brushes• Editing on the GPU• Terrain rendering• Demo• Conclusions
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
33
Both hardware capabilities and gamer’s expectations are constantly growing:
• Higher fidelity graphics• More immersive environments and experiences
Production requires either:
• Larger teams and budgets• More effective tools and more automatization
Both hardware capabilities and gamer’s expectations are constantly growing:
• Higher fidelity graphics• More immersive environments and experiences
Production requires either:
• Larger teams and budgets• More effective tools and more automatization
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
44
Game content creation:
• Indoor environments:– Buildings– Artifacts
• Outdoor environments:– Terrain– Vegetation
• Actors• …
Game content creation:
• Indoor environments:– Buildings– Artifacts
• Outdoor environments:– Terrain– Vegetation
• Actors• …
Game content creation:
• Indoor environments:– Buildings– Artifacts
• Outdoor environments:– Terrain (Heightfields)– Vegetation
• Actors• …
Game content creation:
• Indoor environments:– Buildings– Artifacts
• Outdoor environments:– Terrain (Heightfields)– Vegetation
• Actors• …
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
55
Heightfield terrain:Heightfield terrain:
• 2D specification2D specification
• 3D geometry3D geometry
• Simple but fast & Simple but fast & compactcompact
• Importable/exportable as imageImportable/exportable as image
Heightfield terrain:Heightfield terrain:
• 2D specification2D specification
• 3D geometry3D geometry
• Simple but fast & Simple but fast & compactcompact
• Importable/exportable as imageImportable/exportable as image
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
66
Three creation categories:Three creation categories:• Local brushingLocal brushing• Procedural synthesisProcedural synthesis• Erosion simulationErosion simulation
Three creation categories:Three creation categories:• Local brushingLocal brushing• Procedural synthesisProcedural synthesis• Erosion simulationErosion simulation
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
77
Three creation categories:Three creation categories:• Local brushingLocal brushing• Procedural synthesisProcedural synthesis• Erosion simulationErosion simulation
Three creation categories:Three creation categories:• Local brushingLocal brushing• Procedural synthesisProcedural synthesis• Erosion simulationErosion simulation
Applications:Applications:• Game editorsGame editors
(e.g. UnrealEd, Sandbox)(e.g. UnrealEd, Sandbox)
Pros:Pros:• User controllableUser controllable• InteractiveInteractive
Cons:Cons:• Lack of realismLack of realism
Applications:Applications:• Game editorsGame editors
(e.g. UnrealEd, Sandbox)(e.g. UnrealEd, Sandbox)
Pros:Pros:• User controllableUser controllable• InteractiveInteractive
Cons:Cons:• Lack of realismLack of realism
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
88
Three creation categories:Three creation categories:• Local brushingLocal brushing• Procedural synthesisProcedural synthesis• Erosion simulationErosion simulation
Three creation categories:Three creation categories:• Local brushingLocal brushing• Procedural synthesisProcedural synthesis• Erosion simulationErosion simulation
Applications:Applications:• Terrain generatorsTerrain generators
(e.g. Terragen, World (e.g. Terragen, World Machine)Machine)
Pros:Pros:• Complex resultsComplex results• Easy to set upEasy to set up
Cons:Cons:• Lack of local controlLack of local control• SlowSlow
Applications:Applications:• Terrain generatorsTerrain generators
(e.g. Terragen, World (e.g. Terragen, World Machine)Machine)
Pros:Pros:• Complex resultsComplex results• Easy to set upEasy to set up
Cons:Cons:• Lack of local controlLack of local control• SlowSlow
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
99
Three creation categories:Three creation categories:• Local brushingLocal brushing• Procedural synthesisProcedural synthesis• Erosion simulationErosion simulation
Three creation categories:Three creation categories:• Local brushingLocal brushing• Procedural synthesisProcedural synthesis• Erosion simulationErosion simulation
Applications:Applications:• Terrain generatorsTerrain generators
(e.g. Terragen, World (e.g. Terragen, World Machine)Machine)
Pros:Pros:• RealisticRealistic• Apply to any terrainApply to any terrain
Cons:Cons:• Lack of local controlLack of local control• Very slowVery slow
Applications:Applications:• Terrain generatorsTerrain generators
(e.g. Terragen, World (e.g. Terragen, World Machine)Machine)
Pros:Pros:• RealisticRealistic• Apply to any terrainApply to any terrain
Cons:Cons:• Lack of local controlLack of local control• Very slowVery slow
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
1010
Central question:Central question:
““What are the main bottlenecks in terrain design for What are the main bottlenecks in terrain design for current computer gaming applications and how can current computer gaming applications and how can these bottlenecks be alleviated?”these bottlenecks be alleviated?”
More specifically:More specifically: How to improve designers’ workflow?How to improve designers’ workflow? Which tools and techniques could be provided?Which tools and techniques could be provided? How to reconcile speed and complexity?How to reconcile speed and complexity? How to accomplish this on modern PCs?How to accomplish this on modern PCs?
Central question:Central question:
““What are the main bottlenecks in terrain design for What are the main bottlenecks in terrain design for current computer gaming applications and how can current computer gaming applications and how can these bottlenecks be alleviated?”these bottlenecks be alleviated?”
More specifically:More specifically: How to improve designers’ workflow?How to improve designers’ workflow? Which tools and techniques could be provided?Which tools and techniques could be provided? How to reconcile speed and complexity?How to reconcile speed and complexity? How to accomplish this on modern PCs?How to accomplish this on modern PCs?
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
1111
We need:We need:
• ControlControl
• FeedbackFeedback
• RealismRealism
• EfficiencyEfficiency
We need:We need:
• ControlControl
• FeedbackFeedback
• RealismRealism
• EfficiencyEfficiency
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
1212
We’ve got:We’ve got:
ControlControl
FeedbackFeedback
RealismRealism
EfficiencyEfficiency
- How do you place or move a realistic mountain in a virtual world?- How do you place or move a realistic mountain in a virtual world?
We’ve got:We’ve got:
ControlControl
FeedbackFeedback
RealismRealism
EfficiencyEfficiency
- How do you place or move a realistic mountain in a virtual world?- How do you place or move a realistic mountain in a virtual world?
Brush systemBrush systemProcedural/Procedural/
simulationsimulation
Local editingLocal editing Regenerate allRegenerate all
GoodGood PoorPoor
DifficultDifficult EasyEasy
PoorPoor PoorPoor
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
1313
Recommended improvements:Recommended improvements:
• Procedural brushes:Procedural brushes:– Feedback and control of brushesFeedback and control of brushes– Realism of procedural techniquesRealism of procedural techniques
• Other suggestions:Other suggestions:– Layers and blendingLayers and blending– Multi undoMulti undo
Recommended improvements:Recommended improvements:
• Procedural brushes:Procedural brushes:– Feedback and control of brushesFeedback and control of brushes– Realism of procedural techniquesRealism of procedural techniques
• Other suggestions:Other suggestions:– Layers and blendingLayers and blending– Multi undoMulti undo
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
1414
• Current brushes are simple and procedural Current brushes are simple and procedural techniques are slow for a reason...techniques are slow for a reason...
• Exploit parallelism in current PCsExploit parallelism in current PCs
– Multi-core CPUsMulti-core CPUs
– Graphics card GPUsGraphics card GPUs
• Current brushes are simple and procedural Current brushes are simple and procedural techniques are slow for a reason...techniques are slow for a reason...
• Exploit parallelism in current PCsExploit parallelism in current PCs
– Multi-core CPUsMulti-core CPUs
– Graphics card GPUsGraphics card GPUs
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
1515
Implemented testbed for the evaluation of techniques:Implemented testbed for the evaluation of techniques:
• Stand-alone editor applicationStand-alone editor application
• Import/exportImport/export
• Terrain edit systemTerrain edit system– Procedural brushesProcedural brushes
• Terrain render systemTerrain render system
Implemented testbed for the evaluation of techniques:Implemented testbed for the evaluation of techniques:
• Stand-alone editor applicationStand-alone editor application
• Import/exportImport/export
• Terrain edit systemTerrain edit system– Procedural brushesProcedural brushes
• Terrain render systemTerrain render system
Implemented testbed for the evaluation of techniques:Implemented testbed for the evaluation of techniques:
• Stand-alone editor applicationStand-alone editor application
• Import/exportImport/export
• Terrain edit systemTerrain edit system– Procedural brushesProcedural brushes
• Terrain render systemTerrain render system
Implemented testbed for the evaluation of techniques:Implemented testbed for the evaluation of techniques:
• Stand-alone editor applicationStand-alone editor application
• Import/exportImport/export
• Terrain edit systemTerrain edit system– Procedural brushesProcedural brushes
• Terrain render systemTerrain render system
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
1616
Procedural brushes:Procedural brushes:
• Executes procedural algorithmExecutes procedural algorithm
• Limits effect to ‘brushed’ areaLimits effect to ‘brushed’ area
Procedural brushes:Procedural brushes:
• Executes procedural algorithmExecutes procedural algorithm
• Limits effect to ‘brushed’ areaLimits effect to ‘brushed’ area
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
1717
Procedural algorithms:Procedural algorithms:
• Many different algorithmsMany different algorithms
• Deterministic functionDeterministic function
• Not based on physical modelsNot based on physical models
• Designed to visually approximate featuresDesigned to visually approximate features
• Typically some sort of noisy signalTypically some sort of noisy signal
Procedural algorithms:Procedural algorithms:
• Many different algorithmsMany different algorithms
• Deterministic functionDeterministic function
• Not based on physical modelsNot based on physical models
• Designed to visually approximate featuresDesigned to visually approximate features
• Typically some sort of noisy signalTypically some sort of noisy signal
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
1818
+ +
+
Low MidMid
High SumSum
LowLow
Mid
HighHigh
Sum
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
1919
Weights of individual noiseWeights of individual noise
signals influence roughnesssignals influence roughnessWeights of individual noiseWeights of individual noise
signals influence roughnesssignals influence roughness
More “High”More “High”More “High”More “High”Less “High”Less “High”Less “High”Less “High”
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
2020
Proc( x )
Improving procedural realism:Improving procedural realism:
• Output transformOutput transform• Input transformInput transform• Quilez noiseQuilez noise• Erosive noiseErosive noise• Directional noiseDirectional noise
Improving procedural realism:Improving procedural realism:
• Output transformOutput transform• Input transformInput transform• Quilez noiseQuilez noise• Erosive noiseErosive noise• Directional noiseDirectional noise
Transform( Proc( x ) )Proc( Perturb( x ) )Proc( x )Dynamic octave weightsGradient-based input transformStretched perpendicular to brush
directionStretched along brush directionStretched at 45˚ rel. to brush
direction
Improving procedural realism:Improving procedural realism:
• Output transformOutput transform• Input transformInput transform• Quilez noiseQuilez noise• Erosive noiseErosive noise• Directional noiseDirectional noise
Improving procedural realism:Improving procedural realism:
• Output transformOutput transform• Input transformInput transform• Quilez noiseQuilez noise• Erosive noiseErosive noise• Directional noiseDirectional noise
Improving procedural realism:Improving procedural realism:
• Output transformOutput transform• Input transformInput transform• Quilez noiseQuilez noise• Erosive noiseErosive noise• Directional noiseDirectional noise
Improving procedural realism:Improving procedural realism:
• Output transformOutput transform• Input transformInput transform• Quilez noiseQuilez noise• Erosive noiseErosive noise• Directional noiseDirectional noise
Improving procedural realism:Improving procedural realism:
• Output transformOutput transform• Input transformInput transform• Quilez noiseQuilez noise• Erosive noiseErosive noise• Directional noiseDirectional noise
Improving procedural realism:Improving procedural realism:
• Output transformOutput transform• Input transformInput transform• Quilez noiseQuilez noise• Erosive noiseErosive noise• Directional noiseDirectional noise
Improving procedural realism:Improving procedural realism:
• Output transformOutput transform• Input transformInput transform• Quilez noiseQuilez noise• Erosive noiseErosive noise• Directional noiseDirectional noise
Improving procedural realism:Improving procedural realism:
• Output transformOutput transform• Input transformInput transform• Quilez noiseQuilez noise• Erosive noiseErosive noise• Directional noiseDirectional noise
Improving procedural realism:Improving procedural realism:
• Output transformOutput transform• Input transformInput transform• Quilez noiseQuilez noise• Erosive noiseErosive noise• Directional noiseDirectional noise
Improving procedural realism:Improving procedural realism:
• Output transformOutput transform• Input transformInput transform• Quilez noiseQuilez noise• Erosive noiseErosive noise• Directional noiseDirectional noise
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
2121
Brushing:Brushing:• Convert mouse stroke to positions on heightfieldConvert mouse stroke to positions on heightfield• Create spline from stroke pathCreate spline from stroke path• Create instance locations from splineCreate instance locations from spline• Apply individual instancesApply individual instances
Brushing:Brushing:• Convert mouse stroke to positions on heightfieldConvert mouse stroke to positions on heightfield• Create spline from stroke pathCreate spline from stroke path• Create instance locations from splineCreate instance locations from spline• Apply individual instancesApply individual instances
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
2222
+X
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
2323
• GPU hardware, standards and interfaces designed GPU hardware, standards and interfaces designed for 3D renderingfor 3D rendering
• All other algorithms must be mapped to rendering All other algorithms must be mapped to rendering operationsoperations
• GPU hardware, standards and interfaces designed GPU hardware, standards and interfaces designed for 3D renderingfor 3D rendering
• All other algorithms must be mapped to rendering All other algorithms must be mapped to rendering operationsoperations
Algorithm / CPUAlgorithm / CPU GPUGPU
Scalar / small vectorScalar / small vector ColorColor
2D data / matrix2D data / matrix 2D texture in video 2D texture in video memorymemory
AlgorithmAlgorithm Pixel shader codePixel shader code
Execute algorithmExecute algorithm Render 3D scene to Render 3D scene to texturetexture
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
2424
Mapping heightfield concepts:Mapping heightfield concepts:
• Height as colorHeight as color
• Heightfields as texturesHeightfields as textures
• Split into multiple ‘pages’Split into multiple ‘pages’
• Editing and synthesis Editing and synthesis algorithms as different pixel algorithms as different pixel shadersshaders
Mapping heightfield concepts:Mapping heightfield concepts:
• Height as colorHeight as color
• Heightfields as texturesHeightfields as textures
• Split into multiple ‘pages’Split into multiple ‘pages’
• Editing and synthesis Editing and synthesis algorithms as different pixel algorithms as different pixel shadersshaders
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
2525
Cached page textures (read only)
Cached RTT textures (read / write)
Unrequired page
textures
Required page textures
Operation-specific pixel
shader
General-purpose quad
rendering vertex shader
General-purpose quad vertex buffer
Output RTT textures
Other available
RTT textures
Full heightfield page store
Copies of all page
textures
GP
U &
Vid
eo m
emo
ryG
rap
hic
sb
us
Mai
n m
emo
ry
3D rendering data
Tile index & vertex buffers
Terrain detail RGB textures
GPU
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
2626
GPU optimizations:GPU optimizations:GPU optimizations:GPU optimizations:
• Don’t update identical Don’t update identical sections of RTT output sections of RTT output texture texture
• Combine calculations for Combine calculations for multiple brush instances multiple brush instances in in pixel shaderpixel shader
• Don’t update identical Don’t update identical sections of RTT output sections of RTT output texture texture
• Combine calculations for Combine calculations for multiple brush instances multiple brush instances in in pixel shaderpixel shader
• Only apply to affected pagesOnly apply to affected pages
• Divide in affected/unaffected Divide in affected/unaffected sectionssections
• Apply complex procedural Apply complex procedural pixel shader only to affected pixel shader only to affected sectionssections
• Apply ‘copy’ pixel shader toApply ‘copy’ pixel shader tounaffected sectionsunaffected sections
• Only apply to affected pagesOnly apply to affected pages
• Divide in affected/unaffected Divide in affected/unaffected sectionssections
• Apply complex procedural Apply complex procedural pixel shader only to affected pixel shader only to affected sectionssections
• Apply ‘copy’ pixel shader toApply ‘copy’ pixel shader tounaffected sectionsunaffected sections
• Neighbor lookups: Split Neighbor lookups: Split sections into different sections into different border casesborder cases
• Prevent dynamic Prevent dynamic conditional branching: conditional branching: Use differently compiled Use differently compiled pixel shaderspixel shaders
• Neighbor lookups: Split Neighbor lookups: Split sections into different sections into different border casesborder cases
• Prevent dynamic Prevent dynamic conditional branching: conditional branching: Use differently compiled Use differently compiled pixel shaderspixel shaders
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
2727
• Density of triangulation should Density of triangulation should dependent on distancedependent on distance
• Retriangulate on camera moveRetriangulate on camera move
• Need balance between Need balance between updates and triangle overhead updates and triangle overhead
• Solution: Triangulate per ‘tile’Solution: Triangulate per ‘tile’
• Density of triangulation should Density of triangulation should dependent on distancedependent on distance
• Retriangulate on camera moveRetriangulate on camera move
• Need balance between Need balance between updates and triangle overhead updates and triangle overhead
• Solution: Triangulate per ‘tile’Solution: Triangulate per ‘tile’
Geometry:Geometry:Geometry:Geometry:
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
2828
• Give each triangle colored detail Give each triangle colored detail
• Terrain editor concerned Terrain editor concerned with modeling, not withwith modeling, not withtexturingtexturing
• Automate texturing withAutomate texturing withprocedural techniquesprocedural techniques
• Dependent on height,Dependent on height,slope and randomnessslope and randomness
• Give each triangle colored detail Give each triangle colored detail
• Terrain editor concerned Terrain editor concerned with modeling, not withwith modeling, not withtexturingtexturing
• Automate texturing withAutomate texturing withprocedural techniquesprocedural techniques
• Dependent on height,Dependent on height,slope and randomnessslope and randomness
Texturing:Texturing:Texturing:Texturing:
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
2929
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
3030
• Iterative design requires control, feedback and realismIterative design requires control, feedback and realism
• Developed procedural brushes offer thisDeveloped procedural brushes offer this
• Exploring GPU parallelism achieves required fast Exploring GPU parallelism achieves required fast processingprocessing
• Proposed novel procedural techniques further improve Proposed novel procedural techniques further improve realismrealism
• Iterative design requires control, feedback and realismIterative design requires control, feedback and realism
• Developed procedural brushes offer thisDeveloped procedural brushes offer this
• Exploring GPU parallelism achieves required fast Exploring GPU parallelism achieves required fast processingprocessing
• Proposed novel procedural techniques further improve Proposed novel procedural techniques further improve realismrealism
Effective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de CarpentierEffective GPU-based synthesis and editing of realistic heightfieldsGiliam J.P. de Carpentier
3131
• Integrate the stand-alone editor with specific game Integrate the stand-alone editor with specific game editoreditor
• Develop more common and novel brushes and toolsDevelop more common and novel brushes and tools
• Develop man-made terrain feature toolsDevelop man-made terrain feature tools
• Integrate the stand-alone editor with specific game Integrate the stand-alone editor with specific game editoreditor
• Develop more common and novel brushes and toolsDevelop more common and novel brushes and tools
• Develop man-made terrain feature toolsDevelop man-made terrain feature tools