5 Commits over 0 Days - ∞cph!
New TerrainMaterial & TerrainStorage assets, improve terrain creation, no more manual vtex layers
New TerrainMaterial asset, can be used on multiple terrains, copied from other projects
* Replaces TerrainData.TerrainLayer which used manual packed vtex files
* Accepts source images for: albedo, normal, rough, ao, height
* Compiles into 2 generated vtex_c
* Contains other properties for metalness, uv scale, uv rotation
* AssetPreview is used for editor UX too, instead of hacky shit before
* TerrainMaterialEditor auto populates _normal _rough etc. properties from albedo
* Drag drop TerrainMaterial assets into Terrain component
* Open for expansion to grass/clutter properties
TerrainStorage
* Replaces TerrainData & TerrainDataFile
* Make use of IJsonConvert to avoid all the crazy crap I was doing before
* Drag drop TerrainStorage asset into scene
Terrain component editor:
* Support creating or linking TerrainStorage if none is attached
* split settings into its own tab, add filter properties
* Don't force Terrain creation through GameObject menu, don't hide terrain asset generation in here, don't hide the Terrain component
* Remove special terrain save logic from SceneEditorSession, use scene.saved editor event
* Disable specular on terrain
Terrain: Mark all TerrainMaterial textures as used and wanting max quality. In the future this could be smarter and not want max quality for textures used far away
Basic height blend
https://files.facepunch.com/matt/1b1711b1/sbox-dev_0JNrWPuC9N.png
JsonUpgrader for TerrainStorage: Resample ^2+1 heightmaps to just ^2, use non-nested format
Fix warning
Heightmap import resamples if non pow2 given
Recompile shader
Terrain height scale scales the normal strength
Import splatmap
New Terrain Material button
TerrainMaterial default images
Fix warning
Heightmap import resamples if non pow2 given
Recompile shader
New TerrainMaterial & TerrainStorage assets, improve terrain creation, no more manual vtex layers
New TerrainMaterial asset, can be used on multiple terrains, copied from other projects
* Replaces TerrainData.TerrainLayer which used manual packed vtex files
* Accepts source images for: albedo, normal, rough, ao, height
* Compiles into 2 generated vtex_c
* Contains other properties for metalness, uv scale, uv rotation
* AssetPreview is used for editor UX too, instead of hacky shit before
* TerrainMaterialEditor auto populates _normal _rough etc. properties from albedo
* Drag drop TerrainMaterial assets into Terrain component
* Open for expansion to grass/clutter properties
TerrainStorage
* Replaces TerrainData & TerrainDataFile
* Make use of IJsonConvert to avoid all the crazy crap I was doing before
* Drag drop TerrainStorage asset into scene
Terrain component editor:
* Support creating or linking TerrainStorage if none is attached
* split settings into its own tab, add filter properties
* Don't force Terrain creation through GameObject menu, don't hide terrain asset generation in here, don't hide the Terrain component
* Remove special terrain save logic from SceneEditorSession, use scene.saved editor event
* Disable specular on terrain
Terrain: Mark all TerrainMaterial textures as used and wanting max quality. In the future this could be smarter and not want max quality for textures used far away
Basic height blend
https://files.facepunch.com/matt/1b1711b1/sbox-dev_0JNrWPuC9N.png
JsonUpgrader for TerrainStorage: Resample ^2+1 heightmaps to just ^2, use non-nested format
Graphics.PrepareTextureForUse -> Texture.MarkUsed (Doesn't need a graphics context now)
Terrain marks all its textures as used for streaming - this could be done more intelligently in the future with certain regions only using certain textures
Fix sbuffer packing
Fix errors
TerrainMaterialEditor autofills _normal _rough etc etc
Basic height blend
https://files.facepunch.com/matt/1b1711b1/sbox-dev_0JNrWPuC9N.png
TerrainMaterial resource with custom compiler which generates 2 packed vtex_c from 5 PBR source images
https://files.facepunch.com/matt/1b1611b1/FvEbxe3xoQ.png
[pick] DragAssetData.Parse: Resolve local assets first before trying to package ident
Don't force Terrain creation through GameObject menu, don't hide terrain asset generation in here, make it so you can add a Terrain component
Add TerrainMaterial AssetPreview - we'll use this for the editor ux too
Replace horrible TerrainData/TerrainDataFile combo with TerrainStorage GameResource
Stub TerrainStorage ResourceEditor
Remove special terrain save logic from SceneEditorSession, use scene.saved editor event
Terrain component editor supports creating or linking TerrainStorage if none is attached
https://files.facepunch.com/matt/1b1611b1/PiMEhkVZd8.png
Terrain component editor split settings into its own tab, add filter properties
https://files.facepunch.com/matt/1b1611b1/obbHlfw3m8.png
TerrainLayerList -> TerrainMaterialList - much simpler, use the TerrainMaterial's AssetPreview thumb
DragDrop TerrainMaterial into TerrainMaterialList
TerrainMaterials GPU buffer, shader uses BCR/NHO textures with 2 channel normal, adding height and AO parameters
PreviewTerrainMaterial: Add nho texture, make previews way bigger
https://files.facepunch.com/matt/1b1611b1/6eH6XTWtsI.png
[pick] Material API specular obeys S_SPECULAR same as Valve's PS_FinalCombinerDoLighting (you can turn it off)
Disable specular on terrain
https://files.facepunch.com/matt/1b1611b1/sbox-dev_SWZ86cs1iM.png
https://files.facepunch.com/matt/1b1611b1/sbox-dev_hhcEQ6Tnhp.png
TerrainMaterial add metalness
TerrainDropObject