Files
LuaCsForBarotraumaEP/Libraries/MonoGame.Framework/Src/Tools/2MGFX/ShaderData.writer.cs
T
2019-06-25 16:00:44 +03:00

58 lines
1.8 KiB
C#

using System.IO;
namespace TwoMGFX
{
internal partial class ShaderData
{
public void Write(BinaryWriter writer, Options options)
{
writer.Write(IsVertexShader);
writer.Write(ShaderCode.Length);
writer.Write(ShaderCode);
writer.Write((byte)_samplers.Length);
foreach (var sampler in _samplers)
{
writer.Write((byte)sampler.type);
writer.Write((byte)sampler.textureSlot);
writer.Write((byte)sampler.samplerSlot);
if (sampler.state != null)
{
writer.Write(true);
writer.Write((byte)sampler.state.AddressU);
writer.Write((byte)sampler.state.AddressV);
writer.Write((byte)sampler.state.AddressW);
writer.Write(sampler.state.BorderColor.R);
writer.Write(sampler.state.BorderColor.G);
writer.Write(sampler.state.BorderColor.B);
writer.Write(sampler.state.BorderColor.A);
writer.Write((byte)sampler.state.Filter);
writer.Write(sampler.state.MaxAnisotropy);
writer.Write(sampler.state.MaxMipLevel);
writer.Write(sampler.state.MipMapLevelOfDetailBias);
}
else
writer.Write(false);
writer.Write(sampler.samplerName);
writer.Write((byte)sampler.parameter);
}
writer.Write((byte)_cbuffers.Length);
foreach (var cb in _cbuffers)
writer.Write((byte)cb);
writer.Write((byte)_attributes.Length);
foreach (var attrib in _attributes)
{
writer.Write(attrib.name);
writer.Write((byte)attrib.usage);
writer.Write((byte)attrib.index);
writer.Write((short)attrib.location);
}
}
}
}