private void SetAlphaTesting(DatDOBJ datDOBJ, RenderSettings renderSettings) { bool enabled = (datDOBJ.Material.Flags & (uint)MeleeDatEnums.MiscFlags.AlphaTest) > 0; float refAlpha = AlphaTestSettings.Default.referenceAlpha; AlphaFunction alphaFunction = AlphaTestSettings.Default.alphaFunction; if (datDOBJ?.Material.PixelProcessing != null) { refAlpha = datDOBJ.Material.PixelProcessing.AlphaRef0 / 255.0f; alphaFunction = MeleeDatToOpenGL.GetAlphaFunction(datDOBJ.Material.PixelProcessing.AlphaComp0); } renderSettings.alphaTestSettings = new AlphaTestSettings(enabled, alphaFunction, refAlpha); }
private static void AddVertexContainer(GXVertexDecompressor decom, List <IndexedVertexData <MeleeVertex> > vertexContainers, DatPolygon polygon, GXDisplayList displayList) { List <MeleeVertex> vertices = new List <MeleeVertex>(); List <int> vertexIndices = new List <int>(); for (int i = 0; i < displayList.Indices.Length; i++) { vertexIndices.Add(i); } vertices.AddRange(ConvertVerts(decom.GetFormattedVertices(displayList, polygon))); PrimitiveType primitiveType = MeleeDatToOpenGL.GetGLPrimitiveType(displayList.PrimitiveType); var vertexContainer = new IndexedVertexData <MeleeVertex>(vertices, vertexIndices, primitiveType); vertexContainers.Add(vertexContainer); }