/*========================================================================= 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