namespace XCEngine { public enum FullscreenPassType { ColorScale = 0, ShaderVector = 1 } public struct FullscreenPassDescriptor { public FullscreenPassType type; public string shaderPath; public string passName; public Vector4 vectorPayload; public static FullscreenPassDescriptor CreateColorScale( Vector4 colorScale) { FullscreenPassDescriptor descriptor = new FullscreenPassDescriptor(); descriptor.type = FullscreenPassType.ColorScale; descriptor.shaderPath = string.Empty; descriptor.passName = string.Empty; descriptor.vectorPayload = colorScale; return descriptor; } public static FullscreenPassDescriptor CreateShaderVector( string shaderPath, Vector4 vectorPayload, string passName = null) { FullscreenPassDescriptor descriptor = new FullscreenPassDescriptor(); descriptor.type = FullscreenPassType.ShaderVector; descriptor.shaderPath = shaderPath ?? string.Empty; descriptor.passName = passName ?? string.Empty; descriptor.vectorPayload = vectorPayload; return descriptor; } public bool IsValid() { switch (type) { case FullscreenPassType.ColorScale: return true; case FullscreenPassType.ShaderVector: return !string.IsNullOrEmpty(shaderPath); default: return false; } } } }