summaryrefslogtreecommitdiff
path: root/public/materialsystem/itexturecompositor.h
blob: 53682e2f8bea6c1eaca833e74a4dd3e585e9ea59 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//========= 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 */