Revert "feat(render): Campaign V slice V4d-2 - move terrain onto the RHI"

This reverts commit b064668b63.
This commit is contained in:
Erik 2026-07-27 22:38:02 +02:00
parent b064668b63
commit ad61f250fb
7 changed files with 553 additions and 496 deletions

View file

@ -32,6 +32,7 @@ internal sealed record WorldRenderFoundation(
string ShadersDirectory,
BindlessSupport Bindless,
TerrainAtlas TerrainAtlas,
Shader TerrainShader,
SceneLightingUboBinding SceneLighting,
DebugLineRenderer DebugLines,
BitmapFont? DebugFont,
@ -61,6 +62,7 @@ internal sealed record WorldRenderDependencies(
internal interface IGameWindowWorldRenderPublication
{
void PublishBindlessSupport(BindlessSupport value);
void PublishTerrainShader(Shader value);
void PublishSceneLighting(SceneLightingUboBinding value);
void PublishDebugLines(DebugLineRenderer value);
void PublishHudResources(BitmapFont font, TextRenderer text);
@ -87,6 +89,7 @@ internal interface IWorldRenderCompositionFactory
IDatReaderWriter dats,
BindlessSupport bindless);
void SetTerrainAnisotropic(TerrainAtlas atlas, int level);
Shader CreateTerrainShader(GL gl, string shadersDirectory);
SceneLightingUboBinding CreateSceneLighting(GL gl);
DebugLineRenderer CreateDebugLines(
AcDream.App.Rendering.Gpu.IGpuDevice device,
@ -100,8 +103,8 @@ internal interface IWorldRenderCompositionFactory
string shadersDirectory);
TerrainModernRenderer CreateTerrain(
GL gl,
AcDream.App.Rendering.Gpu.IGpuDevice device,
ICurrentGpuFrameSource frameSource,
BindlessSupport bindless,
Shader shader,
TerrainAtlas atlas,
IGpuResourceRetirementQueue retirement);
WorldTerrainBuildContext CreateTerrainBuildContext(
@ -212,6 +215,13 @@ internal sealed class RetailWorldRenderCompositionFactory
public void SetTerrainAnisotropic(TerrainAtlas atlas, int level) =>
atlas.SetAnisotropic(level);
public Shader CreateTerrainShader(GL gl, string shadersDirectory) =>
new(
gl,
Path.Combine(shadersDirectory, "terrain_modern.vert"),
Path.Combine(shadersDirectory, "terrain_modern.frag"),
includeCommonPreamble: true);
public SceneLightingUboBinding CreateSceneLighting(GL gl) => new(gl);
public DebugLineRenderer CreateDebugLines(
@ -234,11 +244,11 @@ internal sealed class RetailWorldRenderCompositionFactory
public TerrainModernRenderer CreateTerrain(
GL gl,
AcDream.App.Rendering.Gpu.IGpuDevice device,
ICurrentGpuFrameSource frameSource,
BindlessSupport bindless,
Shader shader,
TerrainAtlas atlas,
IGpuResourceRetirementQueue retirement) =>
new(gl, device, frameSource, atlas, retirement);
new(gl, bindless, shader, atlas, retirement);
public WorldTerrainBuildContext CreateTerrainBuildContext(
uint initialCenterLandblockId,
@ -386,6 +396,7 @@ internal enum WorldRenderCompositionPoint
EnvironmentInitialized,
BindlessPublished,
TerrainAtlasAcquired,
TerrainShaderPublished,
SceneLightingPublished,
DebugLinesPublished,
DebugFontCreated,
@ -472,9 +483,12 @@ internal sealed class WorldRenderCompositionPhase
AppContext.BaseDirectory,
"Rendering",
"Shaders");
// Campaign V slice V4d: terrain no longer needs a Shader composed
// for it — its IGpuPipeline compiles terrain_modern itself, from
// the same sources with the same shared preamble.
Shader terrainShader = AcquireAndPublish(
scope,
"terrain shader",
() => _factory.CreateTerrainShader(gl, shadersDirectory),
_publication.PublishTerrainShader,
WorldRenderCompositionPoint.TerrainShaderPublished);
SceneLightingUboBinding sceneLighting = AcquireAndPublish(
scope,
"scene lighting",
@ -499,8 +513,8 @@ internal sealed class WorldRenderCompositionPhase
"terrain renderer",
() => _factory.CreateTerrain(
gl,
_dependencies.GpuDevice,
_dependencies.GpuFrameSource,
bindless,
terrainShader,
terrainAtlas,
_dependencies.ResourceRetirement),
_publication.PublishTerrain,
@ -573,6 +587,7 @@ internal sealed class WorldRenderCompositionPhase
shadersDirectory,
bindless,
terrainAtlas,
terrainShader,
sceneLighting,
debugLines,
debugFont,