Added EffectLibrary

This commit is contained in:
Simon Lübeß
2021-03-06 18:54:46 +01:00
parent 623ada4b2f
commit 3449463282
2 changed files with 136 additions and 17 deletions
+22 -13
View File
@@ -61,9 +61,6 @@ namespace Sandbox
RasterizerState _rasterizerState ~ delete _;
Effect _effect ~ _?.ReleaseRef();
Effect _textureEffect ~ _?.ReleaseRef();
GraphicsContext _context ~ _?.ReleaseRef();
Texture2D _texture ~ _?.ReleaseRef();
@@ -72,6 +69,8 @@ namespace Sandbox
BlendState _alphaBlendState ~ _?.ReleaseRef();
BlendState _opaqueBlendState ~ _?.ReleaseRef();
EffectLibrary _effectLibrary ~ delete _;
private Vector3 CircleCoord(float angle)
{
return .(Math.Cos(angle), Math.Sin(angle), 0);
@@ -82,13 +81,17 @@ namespace Sandbox
{
_context = Application.Get().Window.Context..AddRef();
_effect = new Effect(_context, "content\\Shaders\\basicShader.hlsl");
_effectLibrary = new EffectLibrary(_context);
_effectLibrary.LoadNoRefInc("content\\Shaders\\basicShader.hlsl");
_textureEffect = new Effect(_context, "content\\Shaders\\textureShader.hlsl");
var textureEffect = _effectLibrary.Load("content\\Shaders\\textureShader.hlsl");
// Create Input Layout
_vertexLayout = new VertexLayout(_context, VertexColorTexture.VertexElements, _textureEffect.VertexShader);
_vertexLayout = new VertexLayout(_context, VertexColorTexture.VertexElements, textureEffect.VertexShader);
textureEffect.ReleaseRef();
// Create hexagon
{
@@ -241,29 +244,35 @@ namespace Sandbox
_opaqueBlendState.Bind();
var basicEffect = _effectLibrary.Get("basicShader");
var textureEffect = _effectLibrary.Get("textureShader");
for(int x < 20)
for(int y < 20)
{
if((x + y) % 2 == 0)
_effect.Variables["BaseColor"].SetData(_squareColor0);
basicEffect.Variables["BaseColor"].SetData(_squareColor0);
else
_effect.Variables["BaseColor"].SetData(_squareColor1);
basicEffect.Variables["BaseColor"].SetData(_squareColor1);
Matrix transform = Matrix.Translation(x * 0.2f, y * 0.2f, 0) * Matrix.Scaling(0.1f);
Renderer.Submit(_quadGeometryBinding, _effect, transform);
Renderer.Submit(_quadGeometryBinding, basicEffect, transform);
}
_effect.Variables["BaseColor"].SetData(_squareColor1);
basicEffect.Variables["BaseColor"].SetData(_squareColor1);
_texture.Bind();
Renderer.Submit(_quadGeometryBinding, _textureEffect, .Scaling(1.5f));
Renderer.Submit(_quadGeometryBinding, textureEffect, .Scaling(1.5f));
_alphaBlendState.Bind();
_ge_logo.Bind();
Renderer.Submit(_quadGeometryBinding, _textureEffect, .Scaling(1.5f));
Renderer.Submit(_quadGeometryBinding, textureEffect, .Scaling(1.5f));
Renderer.EndScene();
basicEffect.ReleaseRef();
textureEffect.ReleaseRef();
}
ColorRGBA _squareColor0 = ColorRGBA.CornflowerBlue;