renderer: internal support for blend modes

This commit is contained in:
2024-09-10 10:36:00 +10:00
parent f8a80c6b38
commit 667201fe49
5 changed files with 227 additions and 26 deletions

View File

@ -0,0 +1,41 @@
internal enum BlendFunc: Hashable {
case off
case on(src: BlendFuncSourceFactor = .one, dst: BlendFuncDestinationFactor = .zero, equation: BlendFuncEquation = .add)
case separate(
srcColor: BlendFuncSourceFactor, srcAlpha: BlendFuncSourceFactor,
dstColor: BlendFuncDestinationFactor, dstAlpha: BlendFuncDestinationFactor,
equColor: BlendFuncEquation, equAlpha: BlendFuncEquation)
}
enum BlendFuncSourceFactor: Hashable {
case zero, one
case srcColor, oneMinusSrcColor
case dstColor, oneMinusDstColor
case srcAlpha, oneMinusSrcAlpha
case dstAlpha, oneMinusDstAlpha
/*
case constantColor, oneMinusConstantColor
case constantAlpha, oneMinusConstantAlpha
*/
case srcAlphaSaturate
case src1Color, oneMinusSrc1Color
case src1Alpha, oneMinusSrc1Alpha
}
enum BlendFuncDestinationFactor: Hashable {
case zero, one
case srcColor, oneMinusSrcColor
case dstColor, oneMinusDstColor
case srcAlpha, oneMinusSrcAlpha
case dstAlpha, oneMinusDstAlpha
/*
case constantColor, oneMinusConstantColor
case constantAlpha, oneMinusConstantAlpha
*/
}
enum BlendFuncEquation: Hashable {
case add
case subtract, reverseSubtract
case min, max
}