This page has been translated automatically.
Video Tutorials
Interface
Essentials
Advanced
How To
Professional (SIM)
UnigineEditor
Interface Overview
Assets Workflow
Version Control
Settings and Preferences
Working With Projects
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Lighting
Sandworm
Using Editor Tools for Specific Tasks
Extending Editor Functionality
Built-in Node Types
Nodes
Objects
Effects
Decals
Light Sources
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
Programming
Fundamentals
Setting Up Development Environment
Usage Examples
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
Materials and Shaders
Rebuilding the Engine Tools
GUI
Double Precision Coordinates
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Content Creation
Content Optimization
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
Warning! This version of documentation is OUTDATED, as it describes an older SDK version! Please switch to the documentation for the latest SDK version.
Warning! This version of documentation describes an old SDK version which is no longer supported! Please upgrade to the latest SDK version.

Unigine::Shader Class

Header: #include <UnigineShader.h>

Interface for shader manipulation. Shader is an interface for loading shaders, setting parameter values, binding graphic context.

To get loaded shader programs, use special methods for corresponding Direct3D11 shaders or use getGLProgramID() to get the OpenGL shaders.

Shader class provides a lot of methods to set parameters (or arrays of parameters) to shader programs.

Usage Example#

This example demonstrates how to use your custom shaders (UUSL, GLSL, HLSL) to render a post-effect.

Add the following code to the AppWorldLogic.cpp file.

Source code (C++)
//...

ShaderPtr shader;

int AppWorldLogic::init()
{
	// String containing the source code of the vertex shader (GLSL, HLSL, UUSL)
	const auto vertex_shader = R"foo(
float4 main(float2 pos : POSITION) : SV_POSITION
{
	return float4(pos, 0.0f, 1.0f);
}
)foo";

	// String containing the source code of the fragment shader (GLSL, HLSL, UUSL)
	const auto fragment_shader = R"foo(
cbuffer vars : register(b0)
{
	float4 color;
};

float4 main(float4 fragCoord : SV_POSITION) : SV_TARGET
{
	return color;
}
)foo";

	shader = Shader::create();

	// Loading vertex and fragment shaders and compiling them
	shader->loadVertex(vertex_shader, "");
	shader->loadFragment(fragment_shader, "");
	shader->compile();

	// Adding a render END_SCREEN callback to render the result as a post-effect
	Render::addCallback(Render::CALLBACK_END_SCREEN,
		MakeCallback([&]()
			{
				// Getting a post RenderTarget to render to
				const auto rt = Renderer::getPostRenderTarget();
				rt->unbindAll();
				rt->bindColorTexture(0, Renderer::getTextureColor());
				rt->enable();

				// Binding our shader and rendering the screen via FFP
				shader->bind();
				// setting the fill color to magenta
				shader->setParameterFloat4("color", Math::vec4(1.0f, 0.0f, 1.0f, 1.0f));
				shader->flushParameters();
				Ffp::renderScreen();
				
				// Unbinding the shader and disabling the target
				shader->unbind();

				rt->disable();

			}));

	return 1;
}
// ...

Shader Class

Enums

WARNING_MODE#

Warning mode for the shader compiler.
NameDescription
WARNING_MODE_DISABLE = 0All shader compilation warnings are ignored. Using this mode is not recommended as it may result in driver and OS crashes, so you use it at your own risk.
WARNING_MODE_SOFT = 1All shader compilation warnings are printed to log, but ignored. You can use this mode if you have checked and you're absolutely sure that the warnings do not cause driver or OS crashes.
WARNING_MODE_HARD = 2All warnings are treated as errors. This level is used by default.

Members


static ShaderPtr create ( ) #

Default shader constructor.

static ShaderPtr create ( const char * name ) #

Shader constructor. Loads all existing shaders with given name.

Arguments

  • const char * name - Shader name.

static ShaderPtr create ( const char * name, const char * defines ) #

Shader constructor. Loads all existing shaders with given name.

Arguments

  • const char * name - Shader name.
  • const char * defines - Shader defines.

static ShaderPtr create ( const char * vertex, const char * fragment, const char * defines ) #

Shader constructor. Loads only vertex and fragment shaders with given names.

Arguments

  • const char * vertex - Vertex shader name or source.
  • const char * fragment - Fragment shader name or source.
  • const char * defines - Shader defines.

void * getD3D11ComputeShader ( ) const#

Returns Direct3D11 compute shader.

void * getD3D11ControlShader ( ) const#

Returns Direct3D11 control shader.

void * getD3D11EvaluateShader ( ) const#

Returns Direct3D11 evaluate shader.

void * getD3D11FragmentShader ( ) const#

Returns Direct3D11 fragment shader.

void * getD3D11GeometryShader ( ) const#

Returns Direct3D11 geometry shader.

void * getD3D11VertexShader ( ) const#

Returns Direct3D11 vertex shader.

int getGLProgramID ( ) const#

Returns OpenGL program identifier.

void bind ( ) const#

Binds shader.

void clear ( ) const#

Clears shader.

bool compile ( ) const#

Compiles shader.

Return value

1 if the shader compiled successfully; otherwise, 0.

void destroy ( ) const#

Destroys shader.

int findParameter ( const char * name ) #

Finds shader parameter.

Arguments

  • const char * name - Fast identifier.

Return value

Parameter identifier, if found; otherwise, -1.

void flushParameters ( ) const#

Flushes shader parameters.

bool loadCompute ( const char * name, const char * defines ) const#

Loads compute shader.

Arguments

  • const char * name - Compute shader name or source.
  • const char * defines - Shader defines.

Return value

1 if the compute shader was loaded successfully; otherwise, 0.

bool loadControl ( const char * name, const char * defines ) const#

Loads control shader.

Arguments

  • const char * name - Control shader name or source.
  • const char * defines - Shader defines.

Return value

1 if the control shader was loaded successfully; otherwise, 0.

bool loadEvaluate ( const char * name, const char * defines ) const#

Loads evaluate shader.

Arguments

  • const char * name - Evaluate shader name or source.
  • const char * defines - Shader defines.

Return value

1 if the evaluate shader was loaded successfully; otherwise, 0.

bool loadFragment ( const char * name, const char * defines ) const#

Loads fragment shader.

Arguments

  • const char * name - Fragment shader name or source.
  • const char * defines - Shader defines.

Return value

1 if the fragment shader was loaded successfully; otherwise, 0.

bool loadGeometry ( const char * name, const char * defines ) const#

Loads geometry shader.

Arguments

  • const char * name - Geometry shader name or source.
  • const char * defines - Shader defines.

Return value

1 if the geometry shader was loaded successfully; otherwise, 0.

bool loadVertex ( const char * name, const char * defines ) const#

Loads vertex shader.

Arguments

  • const char * name - Vertex shader name or source.
  • const char * defines - Shader defines.

Return value

1 if the vertex shader was loaded successfully; otherwise, 0.

void unbind ( ) const#

Unbinds shader.

void setParameterFloat ( int id, float value ) #

Sets shader float parameter value by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • float value - Parameter value to be set.

void setParameterFloat ( const char * name, float value ) #

Sets shader float parameter value by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • float value - Parameter value to be set.

void setParameterFloat2 ( int id, const Math::vec2& value ) #

Sets a shader parameter value for the float2 variable.

Arguments

  • int id - Parameter identifier.
  • const Math::vec2& value - Parameter value to be set.

void setParameterFloat2 ( const char * name, const Math::vec2& value ) #

Sets a shader parameter value for the float2 variable.

Arguments

  • const char * name - Parameter name.
  • const Math::vec2& value - Parameter value to be set.

void setParameterFloat3 ( int id, const Math::vec3& value ) #

Sets a shader parameter value for the float3 variable.

Arguments

  • int id - Parameter identifier.
  • const Math::vec3& value - Parameter value to be set.

void setParameterFloat3 ( const char * name, const Math::vec3& value ) #

Sets a shader parameter value for the float3 variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::vec3& value - Parameter value to be set.

void setParameterFloat4 ( int id, const Math::vec4& value ) #

Sets a shader parameter value for the float4 variable.

Arguments

  • int id - Parameter identifier.
  • const Math::vec4& value - Parameter value to be set.

void setParameterFloat4 ( const char * name, const Math::vec4& value ) #

Sets a shader parameter value for the float4 variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::vec4& value - Parameter value to be set.

void setParameterFloat3x3 ( int id, const Math::mat3& value ) #

Sets a shader parameter value for the float3x3 variable.

Arguments

  • int id - Parameter identifier.
  • const Math::mat3& value - Parameter value to be set.

void setParameterFloat3x3 ( const char * name, const Math::mat3& value ) #

Sets a shader parameter value for the float3x3 variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::mat3& value - Parameter value to be set.

void setParameterFloat4x4 ( int id, const Math::mat4& value ) #

Sets a shader parameter value for the float4x4 variable.

Arguments

  • int id - Parameter identifier.
  • const Math::mat4& value - Parameter value to be set.

void setParameterFloat4x4 ( const char * name, const Math::mat4& value ) #

Sets a shader parameter value for the float4x4 variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::mat4& value - Parameter value to be set.

void setParameterInt ( int id, int value ) #

Sets a shader parameter value for the int variable.

Arguments

  • int id - Parameter identifier.
  • int value - Parameter value to be set.

void setParameterInt ( const char * name, int value ) #

Sets a shader parameter value for the int variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • int value - Parameter value to be set.

void setParameterInt2 ( int id, const Math::ivec2& value ) #

Sets a shader parameter value for the int2 variable.

Arguments

  • int id - Parameter identifier.
  • const Math::ivec2& value - Parameter value to be set.

void setParameterInt2 ( const char * name, const Math::ivec2& value ) #

Sets a shader parameter value for the int2 variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::ivec2& value - Parameter value to be set.

void setParameterInt3 ( int id, const Math::ivec3& value ) #

Sets a shader parameter value for the int3 variable.

Arguments

  • int id - Parameter identifier.
  • const Math::ivec3& value - Parameter value to be set.

void setParameterInt3 ( const char * name, const Math::ivec3& value ) #

Sets a shader parameter value for the int3 variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::ivec3& value - Parameter value to be set.

void setParameterInt4 ( int id, const Math::ivec4& value ) #

Sets a shader parameter value for the int4 variable.

Arguments

  • int id - Parameter identifier.
  • const Math::ivec4& value - Parameter value to be set.

void setParameterInt4 ( const char * name, const Math::ivec4& value ) #

Sets a shader parameter value for the int4 variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::ivec4& value - Parameter value to be set.

void setParameterDouble ( int id, double value ) #

Sets a shader parameter value for the double variable.

Arguments

  • int id - Parameter identifier.
  • double value - Parameter value to be set.

void setParameterDouble ( const char * name, double value ) #

Sets a shader parameter value for the double variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • double value - Parameter value to be set.

void setParameterDouble2 ( int id, const Math::dvec2& value ) #

Sets a shader parameter value for the double2 variable.

Arguments

  • int id - Parameter identifier.
  • const Math::dvec2& value - Parameter value to be set.

void setParameterDouble2 ( const char * name, const Math::dvec2& value ) #

Sets a shader parameter value for the double2 variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::dvec2& value - Parameter value to be set.

void setParameterDouble3 ( int id, const Math::dvec3& value ) #

Sets a shader parameter value for the double3 variable.

Arguments

  • int id - Parameter identifier.
  • const Math::dvec3& value - Parameter value to be set.

void setParameterDouble3 ( const char * name, const Math::dvec3& value ) #

Sets a shader parameter value for the double3 variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::dvec3& value - Parameter value to be set.

void setParameterDouble4 ( int id, const Math::dvec4& value ) #

Sets a shader parameter value for the double4 variable.

Arguments

  • int id - Parameter identifier.
  • const Math::dvec4& value - Parameter value to be set.

void setParameterDouble4 ( const char * name, const Math::dvec4& value ) #

Sets a shader parameter value for the double4 variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::dvec4& value - Parameter value to be set.

void setParameterDouble4x4 ( int id, const Math::dmat4& value ) #

Sets a shader parameter value for the double4x4 variable.

Arguments

  • int id - Parameter identifier.
  • const Math::dmat4& value - Parameter value to be set.

void setParameterDouble4x4 ( const char * name, const Math::dmat4& value ) #

Sets a shader parameter value for the double4x4 variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::dmat4& value - Parameter value to be set.

void setParameterScalar ( int id, Math::Scalar value ) #

Sets a shader parameter value for the scalar variable using the parameter id.

Arguments

  • int id - Parameter identifier.
  • Math::Scalar value - Parameter value to be set.

void setParameterScalar ( const char * name, Math::Scalar value ) #

Sets a shader parameter value for the scalar variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • Math::Scalar value - Parameter value to be set.

void setParameterScalar2 ( int id, const Math::Vec2& value ) #

Sets a shader parameter value for the scalar2 variable using the parameter id.

Arguments

  • int id - Parameter identifier.
  • const Math::Vec2& value - Parameter value to be set.

void setParameterScalar2 ( const char * name, const Math::Vec2& value ) #

Sets a shader parameter value for the scalar2 variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::Vec2& value - Parameter value to be set.

void setParameterScalar3 ( int id, const Math::Vec3& value ) #

Sets a shader parameter value for the scalar3 variable using the parameter id.

Arguments

  • int id - Parameter identifier.
  • const Math::Vec3& value - Parameter value to be set.

void setParameterScalar3 ( const char * name, const Math::Vec3& value ) #

Sets a shader parameter value for the scalar3 variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::Vec3& value - Parameter value to be set.

void setParameterScalar4 ( int id, const Math::Vec4& value ) #

Sets a shader parameter value for the scalar4 variable using the parameter id.

Arguments

  • int id - Parameter identifier.
  • const Math::Vec4& value - Parameter value to be set.

void setParameterScalar4 ( const char * name, const Math::Vec4& value ) #

Sets a shader parameter value for the scalar4 variable using the parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::Vec4& value - Parameter value to be set.

void setParameterArrayFloat ( int id, const float * value, int num_elements ) #

Sets shader float array parameter values by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const float * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayFloat ( const char * name, const float * value, int num_elements ) #

Sets shader float array parameter values by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const float * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayFloat ( int id, const Vector< float > & value ) #

Sets shader float array parameter values by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Vector< float > & value - Parameter value to be set.

void setParameterArrayFloat ( const char * name, const Vector< float > & value ) #

Sets shader float array parameter values by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Vector< float > & value - Parameter value to be set.

void setParameterArrayFloat2 ( int id, const Math::vec2 * value, int num_elements ) #

Sets shader float2 array parameter values by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Math::vec2 * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayFloat2 ( const char * name, const Math::vec2 * value, int num_elements ) #

Sets shader float2 array parameter values by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::vec2 * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayFloat2 ( int id, const Vector< Math::vec2 > & value ) #

Sets shader float2 array parameter values by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Vector< Math::vec2 > & value - Parameter value to be set.

void setParameterArrayFloat2 ( const char * name, const Vector< Math::vec2 > & value ) #

Sets shader float2 array parameter values by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Vector< Math::vec2 > & value - Parameter value to be set.

void setParameterArrayFloat4 ( int id, const Math::vec4 * value, int num_elements ) #

Sets shader float4 array parameter values by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Math::vec4 * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayFloat4 ( const char * name, const Math::vec4 * value, int num_elements ) #

Sets shader float4 array parameter values by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::vec4 * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayFloat4 ( int id, const Vector< Math::vec4 > & value ) #

Sets shader float4 array parameter values by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Vector< Math::vec4 > & value - Parameter value to be set.

void setParameterArrayFloat4 ( const char * name, const Vector< Math::vec4 > & value ) #

Sets shader float4 array parameter values by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Vector< Math::vec4 > & value - Parameter value to be set.

void setParameterArrayFloat4x4 ( int id, const Math::mat4 * value, int num_elements ) #

Sets shader float4x4 array parameter values by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Math::mat4 * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayFloat4x4 ( const char * name, const Math::mat4 * value, int num_elements ) #

Sets shader float4x4 array parameter values by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::mat4 * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayFloat4x4 ( int id, const Vector< Math::mat4 > & value ) #

Sets shader float4x4 array parameter values by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Vector< Math::mat4 > & value - Parameter value to be set.

void setParameterArrayFloat4x4 ( const char * name, const Vector< Math::mat4 > & value ) #

Sets shader float4x4 array parameter values by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Vector< Math::mat4 > & value - Parameter value to be set.

void setParameterArrayInt ( int id, const int * value, int num_elements ) #

Sets shader integer array parameter values by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const int * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayInt ( const char * name, const int * value, int num_elements ) #

Sets shader integer array parameter values by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const int * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayInt ( int id, const Vector< int > & value ) #

Sets shader integer array parameter values by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Vector< int > & value - Parameter value to be set.

void setParameterArrayInt ( const char * name, const Vector< int > & value ) #

Sets shader integer array parameter values by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Vector< int > & value - Parameter value to be set.

void setParameterArrayInt2 ( int id, const Math::ivec2 * value, int num_elements ) #

Sets shader int2 array parameter values by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Math::ivec2 * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayInt2 ( const char * name, const Math::ivec2 * value, int num_elements ) #

Sets shader int2 array parameter values by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::ivec2 * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayInt2 ( int id, const Vector< Math::ivec2 > & value ) #

Sets shader int2 array parameter values by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Vector< Math::ivec2 > & value - Parameter value to be set.

void setParameterArrayInt2 ( const char * name, const Vector< Math::ivec2 > & value ) #

Sets shader int2 array parameter values by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Vector< Math::ivec2 > & value - Parameter value to be set.

void setParameterArrayInt4 ( int id, const Math::ivec4 * value, int num_elements ) #

Sets shader int4 array parameter values by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Math::ivec4 * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayInt4 ( const char * name, const Math::ivec4 * value, int num_elements ) #

Sets shader int4 array parameter values by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::ivec4 * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayInt4 ( int id, const Vector< Math::ivec4 > & value ) #

Sets shader int4 array parameter values by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Vector< Math::ivec4 > & value - Parameter value to be set.

void setParameterArrayInt4 ( const char * name, const Vector< Math::ivec4 > & value ) #

Sets shader int4 array parameter values by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Vector< Math::ivec4 > & value - Parameter value to be set.

void setParameterArrayDouble ( int id, const double * value, int num_elements ) #

Sets shader double parameter value by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const double * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayDouble ( const char * name, const double * value, int num_elements ) #

Sets shader double parameter value by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const double * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayDouble ( int id, const Vector< double > & value ) #

Sets shader double parameter value by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Vector< double > & value - Parameter value to be set.

void setParameterArrayDouble ( const char * name, const Vector< double > & value ) #

Sets shader double parameter value by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Vector< double > & value - Parameter value to be set.

void setParameterArrayDouble2 ( int id, const Math::dvec2 * value, int num_elements ) #

Sets shader double2 parameter value by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Math::dvec2 * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayDouble2 ( const char * name, const Math::dvec2 * value, int num_elements ) #

Sets shader double2 parameter value by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::dvec2 * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayDouble2 ( int id, const Vector< Math::dvec2 > & value ) #

Sets shader double2 parameter value by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Vector< Math::dvec2 > & value - Parameter value to be set.

void setParameterArrayDouble2 ( const char * name, const Vector< Math::dvec2 > & value ) #

Sets shader double2 parameter value by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Vector< Math::dvec2 > & value - Parameter value to be set.

void setParameterArrayDouble4 ( int id, const Math::dvec4 * value, int num_elements ) #

Sets shader double4 parameter value by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Math::dvec4 * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayDouble4 ( const char * name, const Math::dvec4 * value, int num_elements ) #

Sets shader double4 parameter value by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Math::dvec4 * value - Parameter value to be set.
  • int num_elements - The number of array elements.

void setParameterArrayDouble4 ( int id, const Vector< Math::dvec4 > & value ) #

Sets shader double4 parameter value by using given parameter id.

Arguments

  • int id - Parameter identifier.
  • const Vector< Math::dvec4 > & value - Parameter value to be set.

void setParameterArrayDouble4 ( const char * name, const Vector< Math::dvec4 > & value ) #

Sets shader double4 parameter value by using given parameter name.

Arguments

  • const char * name - Parameter name.
  • const Vector< Math::dvec4 > & value - Parameter value to be set.

void setDisableCompileError ( bool error ) #

Enables or disables the shader compile error output.

Arguments

  • bool error - true to disable compile errors output; false - to enable.

bool isDisableCompileError ( ) const#

Returns a value indicating if the shader compile error output is disabled.

Return value

true if the shader compile errors output is disabled; otherwise, false.

void setOptimizationLevel ( int level ) #

Sets optimization level for the shader compiler.
Notice
Available for DirectX only.

Arguments

  • int level - Optimization level to be set. One of the following values:
    • 0 - Directs the compiler to skip optimization steps during code generation.
    • 1 - Directs the compiler to use the lowest optimization level. At this level the compiler might produce slower code but produces the code quicker.
    • 2 - Directs the compiler to use the second lowest optimization level.
    • 3 - Directs the compiler to use the second highest optimization level.
    • 4 - Directs the compiler to use the highest optimization level. At this level the compiler produces the best possible code but might take significantly longer to do so.

int getOptimizationLevel ( ) const#

Returns the current optimization level of the shader compiler.
Notice
Available for DirectX only.

Return value

Current optimization level of the shader compiler. One of the following values:
  • 0 - skip optimization steps during code generation.
  • 1 - lowest optimization level. At this level the compiler might produce slower code but produces the code quicker.
  • 2 - second lowest optimization level.
  • 3 - second highest optimization level.
  • 4 - highest optimization level. At this level the compiler produces the best possible code but might take significantly longer to do so.

void setWarningMode ( Shader::WARNING_MODE mode ) #

Sets warning mode for the shader compiler. You can choose modes from the lowest (all shader compilation warnings are ignored) up to the highest level, when warnings are treated as errors. By default the highest level is used, setting lower levels may result in driver and OS crashes, so you use them at your own risk. The soft level can be used if you have checked and you're absolutely sure that the warnings do not cause crashes.
Notice
Available for DirectX only.

Arguments

Shader::WARNING_MODE getWarningMode ( ) const#

Returns the current warning mode for the shader compiler: from the lowest (all shader compilation warnings are ignored) up to the highest level, when warnings are treated as errors. By default the highest level is used, setting lower levels may result in driver and OS crashes, so you use them at your own risk. The soft level can be used if you have checked and you're absolutely sure that the warnings do not cause crashes.
Notice
Available for DirectX only.

Return value

Current warning mode of the shader compiler.

void setDisableCompileCache ( bool cache ) #

Sets a value indicating if compilation cache for the shader is disabled.

Arguments

  • bool cache - true to disable compilation cache for the shader; otherwise, false.

bool isDisableCompileCache ( ) const#

Returns a value indicating if compilation cache for the shader is disabled.

Return value

true if compilation cache for the shader is disabled; otherwise, false.

void setDisableExport ( bool val ) #

Sets a value indicating if shader export to a file is disabled. By default UNIGINE enables exporting a shader program to a file (e.g. for debug purposes). Shader files are created in native languages for both graphic APIs (Direct3D - .hlsl extension, OpenGL - .glsl extension).

Arguments

  • bool val - true to disable shader export to a file; otherwise, false.

bool isDisableExport ( ) const#

Returns a value indicating if shader export to a file is disabled. By default UNIGINE enables exporting a shader program to a file (e.g. for debug purposes). Shader files are created in native languages for both graphic APIs (Direct3D - .hlsl extension, OpenGL - .glsl extension).

Return value

true if shader export to a file is disabled; otherwise, false.

void setIEEEStrictness ( bool strictness ) #

Sets a value indicating if the shader compiler forces the IEEE strict compilation.
Notice
Available for DirectX only.

Arguments

  • bool strictness - true to force the IEEE strict compilation by the shader compiler; otherwise, false.

bool isIEEEStrictness ( ) const#

Returns a value indicating if the shader compiler forces the IEEE strict compilation.
Notice
Available for DirectX only.

Return value

true if the shader compiler forces the IEEE strict compilation; otherwise, false.
Last update: 2023-06-23
Build: ()