This page has been translated automatically.
Video Tutorials
Interface
Essentials
Advanced
How To
Rendering
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
Animations-Related Classes
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
VR-Related Classes
Content Creation
Content Optimization
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials

Unigine::Shader Class

Header: #include <UnigineShader.h>

Interface for shader manipulation. Here, shader is a shader program that can contain several subshaders - vertex, fragment, geometry, etc.

This class allows compiling these shader programs, setting parameter values, and binding graphic context.

Also you can get the loaded DirectX 11 shaders using the corresponding getD3D11*() methods. For OpenGL shader programs, you can use getGLProgramID().

You can also set parameters (or arrays of parameters) to shader programs.

Usage Example#

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

Add the following code to the AppWorldLogic.cpp file.

Source code (C++)
#include <UnigineFfp.h>

using namespace Unigine;

ShaderPtr shader;

//// implementing the event handler to render the result
void endscreen_event_handler()
{
	// 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();
}

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();

	// Compiling a shader with the vertex and fragment subshaders
	shader->compileVertFrag(vertex_shader, fragment_shader, "");

	// Or you can call the "compile()" function as follows - the result will be the same
	// shader->compile(vertex_shader,nullptr,fragment_shader,nullptr,nullptr,nullptr,"");


	// Adding a render EndScreen event to render the result as a post-effect
	Render::getEventEndScreen().connect(endscreen_event_handler);

	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.

SUB_SHADER#

NameDescription
SUB_SHADER_VERTEX = 0Vertex subshader.
SUB_SHADER_CONTROL = 1Control subshader.
SUB_SHADER_EVALUATE = 2Evaluation subshader.
SUB_SHADER_GEOMETRY = 3Geometry subshader.
SUB_SHADER_FRAGMENT = 4Fragment subshader.
SUB_SHADER_COMPUTE = 5Compute subshader.

Members


static ShaderPtr create ( ) #

Default shader constructor.

static ShaderPtr create ( const char * name ) #

Shader constructor. Loads all existing shaders with the given name.

Arguments

  • const char * name - Shader name.

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

Shader constructor. Loads all existing shaders with the given name.

Arguments

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

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

Shader constructor. Loads only vertex and fragment subshaders with the given names.

Arguments

  • const char * vertex - Vertex subshader name or source.
  • const char * fragment - Fragment subshader name or source.
  • const char * defines - User 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 char * vertex, const char * geometry, const char * fragment, const char * compute, const char * control, const char * evaluate, const char * defines = "", unsigned long long key_cache = 0 ) #

Compiles the shader with the specified subshaders. To skip a subshader, pass nullptr instead of an argument. Depending on the subshaders types, additional values are added automatically to the defines argument: VERTEX, CONTROL, EVALUATE, GEOMETRY, FRAGMENT.

Arguments

  • const char * vertex - Vertex subshader path.
  • const char * geometry - Geometry subshader path.
  • const char * fragment - Fragment subshader path.
  • const char * compute - Compute subshader path.
  • const char * control - Control subshader path.
  • const char * evaluate - Evaluation subshader path.
  • const char * defines - User defines (for example, "OPENGL", "DIRECT3D11", or any other).
  • unsigned long long key_cache - Key cache.

Return value

true if the shader is compiled successfully; otherwise, false.

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.

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.

bool compileCompute ( const char * compute, const char * defines = "", unsigned long long key_cache = 0 ) #

Compiles the shader with the specified compute subshader. The additional COMPUTE value is added automatically to the defines argument. This function is the same as the compile() function called only with the compute argument.

Arguments

  • const char * compute - Compute subshader path.
  • const char * defines - User defines (for example, "OPENGL", "DIRECT3D11", or any other).
  • unsigned long long key_cache - Key cache.

Return value

true if the shader compiled successfully; otherwise, false.

bool compileVertFrag ( const char * vertex, const char * fragment, const char * defines = "", unsigned long long key_cache = 0 ) #

Compiles the shader with the specified vertex and fragment subshaders. The additional VERTEX and FRAGMENT values are added automatically to the defines argument. This function is the same as the compile() function called only with the vertex and fragment arguments.

Arguments

  • const char * vertex - Vertex subshader path.
  • const char * fragment - Fragment subshader path.
  • const char * defines - User defines (for example, "OPENGL", "DIRECT3D11", or any other).
  • unsigned long long key_cache - Key cache.

Return value

true if the shader compiled successfully; otherwise, false.

bool compileVertGeomFrag ( const char * vertex, const char * geometry, const char * fragment, const char * defines = "", unsigned long long key_cache = 0 ) #

Compiles the shader with the specified vertex, geometry, and fragment subshaders. The additional VERTEX, GEOMETRY, and FRAGMENT values are added automatically to the defines argument. This function is the same as the compile() function called only with the vertex, fragment, and geometry arguments.

Arguments

  • const char * vertex - Vertex subshader path.
  • const char * geometry - Geometry subshader path.
  • const char * fragment - Fragment subshader path.
  • const char * defines - User defines (for example, "OPENGL", "DIRECT3D11", or any other).
  • unsigned long long key_cache - Key cache.

Return value

true if the shader compiled successfully; otherwise, false.

bool compileShader ( const char * shader, const char * defines = "", unsigned long long key_cache = 0 ) #

Compiles the shader that includes subshaders. Depending on the types of the subshaders defined in the shader file, additional values are added to the defines argument automatically: VERTEX, CONTROL, EVALUATE, GEOMETRY, FRAGMENT.

Arguments

  • const char * shader - Shader path.
  • const char * defines - User defines (for example, "OPENGL", "DIRECT3D11", or any other).
  • unsigned long long key_cache - Key cache.

Return value

trueif the shader with all the subshaders compiled successfully; otherwise, false.

bool validateShader ( Shader::SUB_SHADER type, const char * shader, const char * defines = "" ) #

Validates the shader (whether it can be compiled or not).

Arguments

  • Shader::SUB_SHADER type - Subshader type.
  • const char * shader - Shader path.
  • const char * defines - User defines (for example, "OPENGL", "DIRECT3D11", or any other).

Return value

true if the shader can be compiled; otherwise, false.
Last update: 2024-02-06
Build: ()