-
Notifications
You must be signed in to change notification settings - Fork 0
/
vtkOSPRayProperty.h
128 lines (100 loc) · 3.89 KB
/
vtkOSPRayProperty.h
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
/* =======================================================================================
Copyright 2014-2015 Texas Advanced Computing Center, The University of Texas at Austin
All rights reserved.
Licensed under the BSD 3-Clause License, (the "License"); you may not use this file
except in compliance with the License.
A copy of the License is included with this software in the file LICENSE.
If your copy does not contain the License, you may obtain a copy of the License at:
http://opensource.org/licenses/BSD-3-Clause
Unless required by applicable law or agreed to in writing, software distributed under
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.
See the License for the specific language governing permissions and limitations under
limitations under the License.
pvOSPRay is derived from VTK/ParaView Los Alamos National Laboratory Modules (PVLANL)
Copyright (c) 2007, Los Alamos National Security, LLC
======================================================================================= */
// .NAME vtkOpenProperty - OSPRay property
// .SECTION Description
// vtkOSPRayProperty is a concrete implementation of the abstract class
// vtkProperty. vtkOSPRayProperty interfaces to the OSPRay Raytracer library.
#ifndef __vtkOSPRayProperty_h
#define __vtkOSPRayProperty_h
#include "vtkOSPRayModule.h"
#include "vtkProperty.h"
//BTX
namespace OSPRay {
class Material;
}
//ETX
namespace osp
{
class Material;
class OSPTexture2D;
}
class vtkOSPRayRenderer;
class vtkOSPRayManager;
class VTKOSPRAY_EXPORT vtkOSPRayProperty : public vtkProperty
{
public:
static vtkOSPRayProperty *New();
vtkTypeMacro(vtkOSPRayProperty,vtkProperty) ;
virtual void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Implement base class method.
void Render(vtkActor *a, vtkRenderer *ren);
// Description:
// Implement base class method.
void BackfaceRender(vtkActor *a, vtkRenderer *ren);
// Description:
// Release any graphics resources that are being consumed by this
// property. The parameter window could be used to determine which graphic
// resources to release.
virtual void ReleaseGraphicsResources(vtkWindow *win);
// functions that change parameters of various materials
vtkSetStringMacro(MaterialType);
vtkGetStringMacro(MaterialType);
vtkSetMacro(Reflectance, float);
vtkGetMacro(Reflectance, float);
vtkSetMacro(Eta, float);
vtkGetMacro(Eta, float);
vtkSetMacro(Thickness, float);
vtkGetMacro(Thickness, float);
vtkSetMacro(N, float);
vtkGetMacro(N, float);
vtkSetMacro(Nt, float);
vtkGetMacro(Nt, float);
vtkSetMacro(OSPRayMaterial, osp::Material*);
vtkGetMacro(OSPRayMaterial, osp::Material*);
//Description:
//Internal callbacks for OSPRay thread use.
//Do not call them directly.
void CreateOSPRayProperty();
protected:
vtkOSPRayProperty();
~vtkOSPRayProperty();
private:
vtkOSPRayProperty(const vtkOSPRayProperty&); // Not implemented.
void operator=(const vtkOSPRayProperty&); // Not implemented.
// the last time OSPRayMaterial is modified
vtkTimeStamp OSPRayMaterialMTime;
osp::OSPTexture2D* DiffuseTexture;
// type of material to use. possible values are: "lambertian", "phong",
// "transparent", "thindielectric", "dielectric", "metal", "orennayer"
char * MaterialType;
// amount of reflection to use. should be between 0.0 and 1.0
float Reflectance;
// the index of refraction for a material. used with the thin dielectric
// material
float Eta;
// how thick the material is. used with the thin dielectric material
float Thickness;
// index of refraction for outside material. used in dielectric material
float N;
// index of refraction for inside material (transmissive). used in
// dielectric material
float Nt;
vtkOSPRayManager *OSPRayManager;
osp::Material* OSPRayMaterial;
};
#endif