You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
3.7 KiB
C++
142 lines
3.7 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkRIBProperty.h
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
/**
|
|
* @class vtkRIBProperty
|
|
* @brief RIP Property
|
|
*
|
|
* vtkRIBProperty is a subclass of vtkProperty that allows the user to
|
|
* specify named shaders for use with RenderMan. Both surface
|
|
* and displacement shaders can be specified. Parameters
|
|
* for the shaders can be declared and set.
|
|
*
|
|
* @sa
|
|
* vtkRIBExporter vtkRIBLight
|
|
*/
|
|
|
|
#ifndef vtkRIBProperty_h
|
|
#define vtkRIBProperty_h
|
|
|
|
#include "vtkIOExportModule.h" // For export macro
|
|
#include "vtkProperty.h"
|
|
|
|
class vtkRIBRenderer;
|
|
|
|
class VTKIOEXPORT_EXPORT vtkRIBProperty : public vtkProperty
|
|
{
|
|
public:
|
|
static vtkRIBProperty* New();
|
|
vtkTypeMacro(vtkRIBProperty, vtkProperty);
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
|
|
//@{
|
|
/**
|
|
* If true (default) the surface shader uses the usual shader parameters:
|
|
* Ka - Ambient amount
|
|
* Kd - Diffuse amount
|
|
* Ks - Specular amount
|
|
* Roughness
|
|
* SpecularColor
|
|
* Additional surface shader parameters can be added with the
|
|
* Set/AddSurfaceShaderParameter methods.
|
|
* If false, all surface shader parameters must be specified
|
|
*/
|
|
vtkSetMacro(SurfaceShaderUsesDefaultParameters, bool);
|
|
vtkGetMacro(SurfaceShaderUsesDefaultParameters, bool);
|
|
vtkBooleanMacro(SurfaceShaderUsesDefaultParameters, bool);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Specify the name of a surface shader.
|
|
*/
|
|
vtkSetStringMacro(SurfaceShader);
|
|
vtkGetStringMacro(SurfaceShader);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Specify the name of a displacement shader.
|
|
*/
|
|
vtkSetStringMacro(DisplacementShader);
|
|
vtkGetStringMacro(DisplacementShader);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Specify declarations for variables..
|
|
*/
|
|
void SetVariable(const char* variable, const char* declaration);
|
|
void AddVariable(const char* variable, const char* declaration);
|
|
//@}
|
|
|
|
/**
|
|
* Get variable declarations
|
|
*/
|
|
char* GetDeclarations();
|
|
|
|
//@{
|
|
/**
|
|
* Specify parameter values for variables.
|
|
* DEPRECATED: use (Set/Add)SurfaceShaderParameter instead.
|
|
*/
|
|
void SetParameter(const char* parameter, const char* value);
|
|
void AddParameter(const char* parameter, const char* value);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Specify parameter values for surface shader parameters
|
|
*/
|
|
void SetSurfaceShaderParameter(const char* parameter, const char* value);
|
|
void AddSurfaceShaderParameter(const char* parameter, const char* value);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Specify parameter values for displacement shader parameters
|
|
*/
|
|
void SetDisplacementShaderParameter(const char* parameter, const char* value);
|
|
void AddDisplacementShaderParameter(const char* parameter, const char* value);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Get parameters.
|
|
*/
|
|
char* GetParameters(); // DEPRECATED: use GetSurfaceShaderParameters instead.
|
|
char* GetSurfaceShaderParameters();
|
|
char* GetDisplacementShaderParameters();
|
|
//@}
|
|
|
|
protected:
|
|
vtkRIBProperty();
|
|
~vtkRIBProperty() override;
|
|
|
|
void Render(vtkActor* a, vtkRenderer* ren) override;
|
|
vtkProperty* Property;
|
|
char* SurfaceShader;
|
|
char* DisplacementShader;
|
|
char* Declarations;
|
|
char* SurfaceShaderParameters;
|
|
char* DisplacementShaderParameters;
|
|
bool SurfaceShaderUsesDefaultParameters;
|
|
|
|
private:
|
|
vtkRIBProperty(const vtkRIBProperty&) = delete;
|
|
void operator=(const vtkRIBProperty&) = delete;
|
|
};
|
|
|
|
#endif
|