aboutsummaryrefslogtreecommitdiff
path: root/APEX_1.4/include/turbulencefs/TurbulenceRenderCallback.h
blob: e71e010084662d70ce023485a1624344ffcf2430 (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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*
 * Copyright (c) 2008-2015, NVIDIA CORPORATION.  All rights reserved.
 *
 * NVIDIA CORPORATION and its licensors retain all intellectual property
 * and proprietary rights in and to this software, related documentation
 * and any modifications thereto.  Any use, reproduction, disclosure or
 * distribution of this software and related documentation without an express
 * license agreement from NVIDIA CORPORATION is strictly prohibited.
 */


#ifndef TURBULENCE_RENDER_CALLBACK_H
#define TURBULENCE_RENDER_CALLBACK_H

#include "foundation/Px.h"
#include "UserRenderCallback.h"

namespace nvidia
{
namespace apex
{

PX_PUSH_PACK_DEFAULT

class TurbulenceRenderable;

/**
\brief Velocity format for Turbulence rendering
*/
struct TurbulenceVelocityFormat
{
	/**
	 \brief Enum of velocity format for Turbulence rendering
	 */
	enum Enum
	{
		DEFAULT = 0,
		HALF4 = RenderDataFormat::HALF4,
		FLOAT4 = RenderDataFormat::FLOAT4,
	};
};

/**
\brief Density format for Turbulence rendering
*/
struct TurbulenceDensityFormat
{
	/**
	\brief Enum of density format for Turbulence rendering
	*/
	enum Enum
	{
		DEFAULT = 0,
		UBYTE1 = RenderDataFormat::UBYTE1,
		HALF1 = RenderDataFormat::HALF1,
		FLOAT1 = RenderDataFormat::FLOAT1,
	};
};

/**
\brief Flame format for Turbulence rendering
*/
struct TurbulenceFlameFormat
{
	/**
	\brief Enum of flame format for Turbulence rendering
	*/
	enum Enum
	{
		DEFAULT = 0,
		HALF4 = RenderDataFormat::HALF4,
		FLOAT4 = RenderDataFormat::FLOAT4,
	};
};

/**
\brief Render layout for Turbulence rendering
*/
struct TurbulenceRenderLayout
{
	TurbulenceRenderLayout()
	{
		setDefaults();
	}

	///set default formats
	void setDefaults()
	{
		velocityFormat = TurbulenceVelocityFormat::DEFAULT;
		densityFormat = TurbulenceDensityFormat::DEFAULT;
		flameFormat = TurbulenceFlameFormat::DEFAULT;
	}

	///Velocity format
	TurbulenceVelocityFormat::Enum	velocityFormat;
	
	///Density format
	TurbulenceDensityFormat::Enum	densityFormat;
	
	///Flame format
	TurbulenceFlameFormat::Enum		flameFormat;
};

/**
\brief User defined callback for Turbulence rendering
*/
class TurbulenceRenderCallback : public UserRenderCallback
{
public:
	///Called just after a new Turbulence renderable was created
	virtual void onCreatedTurbulenceRenderable(TurbulenceRenderable& ) {}

	///Called just after an Turbulence renderable was updated
	virtual void onUpdatedTurbulenceRenderable(TurbulenceRenderable& ) {}

	///Called just before an Turbulence renderable is going to be released
	virtual void onReleasingTurbulenceRenderable(TurbulenceRenderable& ) {}

	///Returns render layout
	virtual bool getTurbulenceRenderLayout(TurbulenceRenderLayout& renderLayout, uint32_t sizeX, uint32_t sizeY, uint32_t sizeZ, uint32_t densitySizeMultiplier, uint32_t flameSizeMultiplier)
	{
		PX_UNUSED(renderLayout);
		PX_UNUSED(sizeX);
		PX_UNUSED(sizeY);
		PX_UNUSED(sizeZ);
		PX_UNUSED(densitySizeMultiplier);
		PX_UNUSED(flameSizeMultiplier);
		return false;
	}
};

PX_POP_PACK

}
} // end namespace nvidia

#endif // TURBULENCE_RENDER_CALLBACK_H