Skip to content

Commit

Permalink
no message
Browse files Browse the repository at this point in the history
  • Loading branch information
JakubNei committed Mar 27, 2017
1 parent 1fc87d8 commit e2af286
Show file tree
Hide file tree
Showing 10 changed files with 73 additions and 63 deletions.
11 changes: 8 additions & 3 deletions myengine/CVar.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ public bool Bool


public OpenTK.Input.Key toogleKey = OpenTK.Input.Key.Unknown;
public bool hasDefaultValue = false;

public event Action<CVar> OnChanged;

Expand All @@ -44,19 +43,25 @@ public CVar(MyDebug debug)
this.debug = debug;
}

public CVar OnChangedAdd(Action<CVar> action)
public CVar OnChangedAndNow(Action<CVar> action)
{
OnChanged += action;
if (action != null)
{
OnChanged += action;
action.Invoke(this);
}
return this;
}

/*
public CVar InitializeWith(bool value)
{
_bool = value;
debug.Info(name + " changed to: " + value);
OnChanged?.Invoke(this);
return this;
}
*/

public bool EatBoolIfTrue()
{
Expand Down
4 changes: 2 additions & 2 deletions myengine/Forms/ConsoleWindow.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions myengine/Forms/ConsoleWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MumApp1
namespace MyEngine
{
public partial class ConsoleWindow : Form
{
Expand All @@ -35,11 +35,8 @@ public void AppendText(string msg)
public event Action OnStart;
public event Action OnExit;

public static ConsoleWindow Instance { get; private set; }

public ConsoleWindow()
{
Instance = this;
InitializeComponent();
}

Expand Down
2 changes: 1 addition & 1 deletion myengine/Forms/DebugForm.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

91 changes: 47 additions & 44 deletions myengine/GameSystems/RenderManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,12 @@ public class RenderManager
Factory Factory => Factory.Instance;
readonly MyDebug debug;

CVar enableCulling => debug.GetCVar("enable culling");
CVar enableRasterizerRasterization => debug.GetCVar("enable rasterizer rasterization");
CVar enableRasterizerCulling => debug.GetCVar("enable rasterizer culling");
CVar enableCulling => debug.GetCVar("enable culling", true);
CVar enableRasterizerRasterization => debug.GetCVar("enable rasterizer rasterization", true);
CVar enableRasterizerCulling => debug.GetCVar("enable rasterizer culling", true);
CVar showRasterizerContents => debug.GetCVar("show rasterizer contents");
CVar sortRenderables => debug.GetCVar("sort renderables");
CVar sortRenderables => debug.GetCVar("sort renderables", true);
CVar doParallelize => debug.GetCVar("parallelize render prepare", true);

public RenderManager(Events.EventSystem eventSystem, MyDebug debug)
{
Expand All @@ -48,21 +49,17 @@ public RenderManager(Events.EventSystem eventSystem, MyDebug debug)
GBuffer = new DeferredGBuffer(evt.NewPixelWidth, evt.NewPixelHeight);
});

enableRasterizerRasterization.OnChangedAdd((c) =>
enableRasterizerRasterization.OnChangedAndNow((c) =>
{
if (c.Bool) rasterizer = new SoftwareDepthRasterizer(200, 100);
else rasterizer = null;
}).InitializeWith(true);
});

showRasterizerContents.OnChangedAdd((c) =>
showRasterizerContents.OnChangedAndNow((c) =>
{
if (c.Bool) rasterizer?.Show();
else rasterizer?.Hide();
});

enableCulling.InitializeWith(true);
enableRasterizerCulling.InitializeWith(true);
sortRenderables.InitializeWith(true);
}

public void RenderAll(UniformBlock ubo, Camera camera, IList<ILight> allLights, IEnumerable<IPostProcessEffect> postProcessEffect)
Expand Down Expand Up @@ -357,7 +354,7 @@ public void BuildRenderList(IList<IRenderable> possibleRenderables, Camera camer
int passedFrustumCullingIndex = 0;
lock (possibleRenderables)
{
Parallel.ForEach(possibleRenderables, (renderable) =>
void Work(IRenderable renderable)
{
if (renderable != null && renderable.ShouldRenderInContext(camera, RenderContext))
{
Expand Down Expand Up @@ -385,7 +382,9 @@ public void BuildRenderList(IList<IRenderable> possibleRenderables, Camera camer
}
}
}
});
}
if (doParallelize) Parallel.ForEach(possibleRenderables, Work);
else possibleRenderables.ForEach(Work);
}

debug.AddValue("rendering / meshes / passed frustum culling", passedFrustumCullingIndex);
Expand All @@ -394,35 +393,37 @@ public void BuildRenderList(IList<IRenderable> possibleRenderables, Camera camer
{

int passedRasterizationCullingIndex = 0;
Parallel.For(0, passedFrustumCullingIndex, (i) =>
{
var renderable = passedFrustumCulling[i];
if (renderable.ForcePassCulling)
{
renderable.SetCameraRenderStatusFeedback(camera, RenderStatus.RenderedAndVisible);
var newIndex = Interlocked.Increment(ref passedRasterizationCullingIndex);
passedRasterizationCulling[newIndex - 1] = renderable;
distancesToCamera[newIndex - 1] = 0;
}
else
{
var bounds = renderable.GetCameraSpaceBounds(camera);
if (rasterizer.AreBoundsVisible(bounds))
{
renderable.SetCameraRenderStatusFeedback(camera, RenderStatus.RenderedAndVisible);
var newIndex = Interlocked.Increment(ref passedRasterizationCullingIndex);
passedRasterizationCulling[newIndex - 1] = renderable;
distancesToCamera[newIndex - 1] = bounds.depthClosest;
}
else
{
renderable.SetCameraRenderStatusFeedback(camera, RenderStatus.NotRendered);
}
}
});

debug.AddValue("rendering / meshes / passed rasterization culling", passedRasterizationCullingIndex);
void Work(IRenderable renderable)
{
if (renderable.ForcePassCulling)
{
renderable.SetCameraRenderStatusFeedback(camera, RenderStatus.RenderedAndVisible);
var newIndex = Interlocked.Increment(ref passedRasterizationCullingIndex);
passedRasterizationCulling[newIndex - 1] = renderable;
distancesToCamera[newIndex - 1] = 0;
}
else
{
var bounds = renderable.GetCameraSpaceBounds(camera);
if (rasterizer.AreBoundsVisible(bounds))
{
renderable.SetCameraRenderStatusFeedback(camera, RenderStatus.RenderedAndVisible);
var newIndex = Interlocked.Increment(ref passedRasterizationCullingIndex);
passedRasterizationCulling[newIndex - 1] = renderable;
distancesToCamera[newIndex - 1] = bounds.depthClosest;
}
else
{
renderable.SetCameraRenderStatusFeedback(camera, RenderStatus.NotRendered);
}
}
}

if (doParallelize) Parallel.For(0, passedFrustumCullingIndex, (i) => Work(passedFrustumCulling[i]));
else for (int i = 0; i < passedFrustumCullingIndex; i++) Work(passedFrustumCulling[i]);

debug.AddValue("rendering / meshes / passed rasterization culling", passedRasterizationCullingIndex);

if (sortRenderables)
{
Expand All @@ -435,15 +436,17 @@ public void BuildRenderList(IList<IRenderable> possibleRenderables, Camera camer
}
else
{
toRenderRenderables = passedFrustumCulling.Where(renderable => renderable != null && renderable.ShouldRenderInContext(camera, RenderContext)).ToArray();
toRenderRenderablesCount = passedFrustumCullingIndex;
var a = passedFrustumCulling.Where(renderable => renderable != null && renderable.ShouldRenderInContext(camera, RenderContext)).ToArray();
toRenderRenderables = a;
toRenderRenderablesCount = a.Length;
}

}
else
{
toRenderRenderables = possibleRenderables.ToArray();
toRenderRenderablesCount = possibleRenderablesCount;
var a = possibleRenderables.Where(renderable => renderable != null && renderable.ShouldRenderInContext(camera, RenderContext)).ToArray();
toRenderRenderables = a;
toRenderRenderablesCount = a.Length;
}


Expand Down
8 changes: 2 additions & 6 deletions myengine/MyDebug.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,20 +62,16 @@ public void AddValue(string key, object value)

Dictionary<string, CVar> nameToCVar = new Dictionary<string, CVar>();

public CVar CVar(string name, bool defaultValue = false)
public CVar GetCVar(string name, bool defaultValue = false)
{
CVar result;
if (!nameToCVar.TryGetValue(name, out result))
{
result = new CVar(this);
result.Bool = defaultValue;
result.name = name;
nameToCVar[name] = result;
}
if (result.hasDefaultValue == false)
{
result.Bool = defaultValue;
result.hasDefaultValue = true;
}
return result;
}

Expand Down
9 changes: 9 additions & 0 deletions myengine/MyEngine.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,12 @@
<Compile Include="CVar.cs" />
<Compile Include="Collections\DataAccessibleList.cs" />
<Compile Include="DataBinder.cs" />
<Compile Include="Forms\ConsoleWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\ConsoleWindow.Designer.cs">
<DependentUpon>ConsoleWindow.cs</DependentUpon>
</Compile>
<Compile Include="Forms\DebugForm.cs">
<SubType>Form</SubType>
</Compile>
Expand Down Expand Up @@ -218,6 +224,9 @@
</ItemGroup>
<ItemGroup />
<ItemGroup>
<EmbeddedResource Include="Forms\ConsoleWindow.resx">
<DependentUpon>ConsoleWindow.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\DebugForm.resx">
<DependentUpon>DebugForm.cs</DependentUpon>
</EmbeddedResource>
Expand Down
2 changes: 1 addition & 1 deletion myengine/_EngineMain.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public class EngineMain : IDisposable

public bool ShouldContinueRunning => gameWindow.IsStoppingOrStopped == false && ExitRequested == false;

CVar FpsThrottling => Debug.CVar("fps throttling enabled", true);
CVar FpsThrottling => Debug.GetCVar("fps throttling enabled", true);

// to simulate OpenTk.GameWindow functionalty, see it's source https://github.com/mono/opentk/blob/master/Source/OpenTK/GameWindow.cs
private MyGameWindow gameWindow;
Expand Down
2 changes: 1 addition & 1 deletion mygame/PlanetaryBody/ProceduralPlanets.cs
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ public PlanetaryBody.Root GetClosestPlanet(WorldPos pos)
}


bool FreezeUpdate => scene.Debug.CVar("generation / planet logic pause update");
bool FreezeUpdate => scene.Debug.GetCVar("generation / planet logic pause update");
void PlanetLogicUpdate()
{
if (FreezeUpdate) return;
Expand Down
2 changes: 1 addition & 1 deletion resources/shaders/planetGeneration.compute
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ void main() {



int verticeIndex = int(gl_GlobalInvocationId.x) + param_verticesStartIndexOffset;
int verticeIndex = int(gl_GlobalInvocationID.x) + param_verticesStartIndexOffset;
int tempVerticeIndex = verticeIndex;
int ix = 0;
int iy = 0;
Expand Down

0 comments on commit e2af286

Please sign in to comment.