57 lines
1.9 KiB
C#
57 lines
1.9 KiB
C#
|
|
using Godot;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Rokojori
|
|
{
|
|
public class RDRenderPipelineSetup
|
|
{
|
|
public RDFrameBufferFormat frameBufferFormat;
|
|
public RDVertexFormat vertexFormat;
|
|
|
|
public RDPipelineRasterizationState rasterizationState;
|
|
public RDPipelineMultisampleState multisampleState;
|
|
|
|
public RDPipelineDepthStencilState stencilState;
|
|
public RDPipelineColorBlendState blendState;
|
|
public RenderingDevice.RenderPrimitive primitive;
|
|
|
|
|
|
public static RDPipelineColorBlendState CreateBlendState()
|
|
{
|
|
var blend = new RDPipelineColorBlendState();
|
|
var blendAttachment = new RDPipelineColorBlendStateAttachment();
|
|
|
|
blend.Attachments.Add( blendAttachment );
|
|
|
|
return blend;
|
|
}
|
|
|
|
public static RDPipelineDepthStencilState CreateStencilState(
|
|
RenderingDevice.CompareOperator compareOperator, int mask, int reference,
|
|
RenderingDevice.StencilOperation failOperation, RenderingDevice.StencilOperation passOperation
|
|
)
|
|
{
|
|
var stencil_state = new RDPipelineDepthStencilState();
|
|
stencil_state.FrontOpCompare = compareOperator;
|
|
stencil_state.FrontOpCompareMask = (uint) mask;
|
|
stencil_state.FrontOpReference = (uint) reference;
|
|
stencil_state.FrontOpFail = failOperation;
|
|
stencil_state.FrontOpPass = passOperation;
|
|
|
|
return stencil_state;
|
|
}
|
|
public static RDRenderPipelineSetup Create( RDFrameBufferFormat fbFormat, RDVertexFormat vxFormat, RDPipelineDepthStencilState stencilState )
|
|
{
|
|
var setup = new RDRenderPipelineSetup();
|
|
setup.rasterizationState = new RDPipelineRasterizationState();
|
|
setup.multisampleState = new RDPipelineMultisampleState();
|
|
setup.primitive = RenderingDevice.RenderPrimitive.Triangles;
|
|
setup.blendState = CreateBlendState();
|
|
setup.stencilState = stencilState;
|
|
return setup;
|
|
}
|
|
|
|
}
|
|
} |