source-engine-2018-hl2_src/public/materialsystem/itexturecompositor.h

54 lines
1.4 KiB
C
Raw Permalink Normal View History

2020-04-23 00:56:21 +08:00
//========= Copyright Valve Corporation, All rights reserved. ================================== //
//
// Purpose: Defines a texture compositor infterface which uses simple operations and shaders to
// create complex procedural textures.
//
//============================================================================================== //
#ifndef ITEXTURECOMPOSITOR_H
#define ITEXTURECOMPOSITOR_H
#pragma once
#include "interface.h"
#include "itexture.h"
#define ITEXTURE_COMPOSITOR_INTERFACE_VERSION "_ITextureCompositor000"
enum ECompositeResolveStatus
{
ECRS_Idle,
ECRS_Scheduled,
ECRS_PendingTextureLoads,
ECRS_PendingComposites,
ECRS_Error,
ECRS_Complete
};
enum TextureCompositeCreateFlags_t
{
TEX_COMPOSITE_CREATE_FLAGS_FORCE = 0x00000001,
TEX_COMPOSITE_CREATE_FLAGS_NO_COMPRESSION = 0x00000002,
TEX_COMPOSITE_CREATE_FLAGS_NO_MIPMAPS = 0x00000004,
TEX_COMPOSITE_CREATE_FLAGS_VERIFY_SCHEMA_ONLY = 0x00000008,
TEX_COMPOSITE_CREATE_FLAGS_VERIFY_TEMPLATE_ONLY = 0x00000010,
TEX_COMPOSITE_CREATE_FLAGS_LOG_NODES_ONLY = 0x00000020
};
abstract_class ITextureCompositor
{
public:
virtual int AddRef() = 0;
virtual int Release() = 0;
virtual int GetRefCount() const = 0;
virtual void Update() = 0;
virtual ITexture* GetResultTexture() const = 0;
virtual ECompositeResolveStatus GetResolveStatus() const = 0;
virtual void ScheduleResolve() = 0;
protected:
virtual ~ITextureCompositor() {}
};
#endif /* ITEXTURECOMPOSITOR_H */