GeeXLab
Current version: 0.45.1
>GeeXLab homepage

FurMark
Current version: 1.30.0
>FurMark homepage

GPU Caps Viewer
Current version: 1.55.0.0
>GPU Caps Viewer homepage

GPU Shark
Current version: 0.26.0.0
>GPU Shark homepage


Blogs
>JeGX's HackLab

Geeks3D's Articles
>GPU Memory Speed Demystified

>Multi-Threading Programming Resources

>GeForce and Radeon OpenCL Overview

>How to Get your Multi-core CPU Busy at 100%

>How To Make a VGA Dummy Plug

>Night Vision Post Processing Filter

PhysX FluidMark
Current version: 1.5.4
>FluidMark homepage

TessMark
Current version: 0.3.0
>TessMark homepage

ShaderToyMark
Current version: 0.3.0
>ShaderToyMark homepage
>ShaderToyMark Scores

Demoniak3D
Current Version: 1.23.0
>Demoniak3D
>Download
>Libraries and Plugins
>Demos
>Online Help - Reference Guide
>Codes Samples
 
oZone3D.Net - Demoniak3D Developer Guide


» Back To Index

Demoniak3D/LUA API: Progammable shaders handling library

The HYP_GPUShader library ensures the management of the vertex and pixel shaders (programmable shaders).
HYP_GPUShader.Activate
HYP_GPUShader.Desactivate

HYP_GPUShader.Enable
HYP_GPUShader.Disable

HYP_GPUShader.SetConstant_1i
HYP_GPUShader.SetConstant_2i
HYP_GPUShader.SetConstant_3i
HYP_GPUShader.SetConstant_4i

HYP_GPUShader.AllocArray_1iv
HYP_GPUShader.SetArrayElement_1iv
HYP_GPUShader.AllocArray_2iv
HYP_GPUShader.SetArrayElement_2iv
HYP_GPUShader.AllocArray_3iv
HYP_GPUShader.SetArrayElement_3iv
HYP_GPUShader.AllocArray_4iv
HYP_GPUShader.SetArrayElement_4iv

HYP_GPUShader.SetConstant_1f
HYP_GPUShader.SetConstant_2f
HYP_GPUShader.SetConstant_3f
HYP_GPUShader.SetConstant_4f

HYP_GPUShader.AllocArray_1fv
HYP_GPUShader.SetArrayElement_1fv
HYP_GPUShader.AllocArray_2fv
HYP_GPUShader.SetArrayElement_2fv
HYP_GPUShader.AllocArray_3fv
HYP_GPUShader.SetArrayElement_3fv
HYP_GPUShader.AllocArray_4fv
HYP_GPUShader.SetArrayElement_4fv

HYP_GPUShader.SetConstant_4x4f

SetConstant_{1|2|3|4}i

SetConstant_{1|2|3|4}i allows to create or to update an integer {1|2|3|4}D uniform variable. The name of this varibale must exist in the source code of the shader.
Syntaxe
HYP_GPUShader.SetConstant_1i( shader_name, uniform_name, x );
HYP_GPUShader.SetConstant_2i( shader_name, uniform_name, x, y );
HYP_GPUShader.SetConstant_3i( shader_name, uniform_name, x, y, z );
HYP_GPUShader.SetConstant_4i( shader_name, uniform_name, x, y, z, w );
  • shader_name - [STR127] - shader name.
  • uniform_name - [STR64] - uniform name.
  • x, y, z, w - [INTEGER] - uniform values.
Exemple
HYP_GPUShader.SetConstant_1i( "skin_shader", "skin_type", 3 );

SetConstant_{1|2|3|4}f

SetConstant_{1|2|3|4}f allows to create or to update a real {1|2|3|4}D uniform variable. The name of this varibale must exist in the source code of the shader.
Syntaxe
HYP_GPUShader.SetConstant_1f( shader_name, uniform_name, x );
HYP_GPUShader.SetConstant_2f( shader_name, uniform_name, x, y );
HYP_GPUShader.SetConstant_3f( shader_name, uniform_name, x, y, z );
HYP_GPUShader.SetConstant_4f( shader_name, uniform_name, x, y, z, w );
  • shader_name - [STR127] - shader name.
  • uniform_name - [STR64] - uniform name.
  • x, y, z, w - [REAL] - uniform values.
Exemple
HYP_GPUShader.SetConstant_1f( "skin_shader", "opacity", 0.74 );

SetConstant_4x4f

SetConstant_4x4f allows to pass to the shader a constant of the type stamps 4x4. The name of the constant must exist in the source code of the shader. This matrix respects the OpenGL convention (column matrix - columns vectors):
|x'|   | m_0  m_4  m_8   m_12 |   |x|
|y'| = | m_1  m_5  m_9   m_13 | * |y|
|z'|   | m_2  m_6  m_10  m_14 |   |z|
|1 |   | m_3  m_7  m_11  m_15 |   |1|

		<--> <-->  <-->  <-->
		 X     Y     Z   Position
		axis  axis  axis
Syntax
HYP_GPUShader.SetConstant_4x4f( shader_name, constant_name, 
m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15 );
  • shader_name - [STR127] - character string representing the name of the shader to which the constant is passed.
  • constant_name - [STR64] - character string representing the name of the constant.
  • m0 à m15 - [REAL] - coefficients of the 4x4 matrix.

Activate

Activate allows to activate (i.e bind in OpenGL terms) a gpu shader.
Syntaxe
HYP_GPUShader.Activate( shader_name );
  • shader_name - [STR127] - shader name.
Example
-- Activate the shader.
//
HYP_GPUShader.Activate( "myShader" );

-- Set the color map.
--
HYP_GPUShader.SetConstant_1i( "myShader", "colorMap", 0 );	
-- We have finish so we can desactivate the shader.
--
HYP_GPUShader.Desactivate( "myShader" );

Desactivate

Desactivate allows to desactive (i.e bind(0) in OpenGL terms) a gpu shader previously bound with Activate.
Syntaxe
HYP_GPUShader.Desactivate( shader_name );
  • shader_name - [STR127] - shader name.

Enable

Enable allows to enable a gpu shader.
Syntaxe
HYP_GPUShader.Enable( shader_name );
  • shader_name - [STR127] - shader name.

Disable

Disable allows to disable a un gpu shader.
Syntaxe
HYP_GPUShader.Disable( shader_name );
  • shader_name - [STR127] - shader name.

AllocArray_{1|2|3|4}iv

AllocArray_{1|2|3|4}iv allows to allocate an array of {1|2|3|4}D integer in order to create an uniform array.
Syntaxe
HYP_GPUShader.AllocArray_1iv( shader_name, uniform_name, count );
HYP_GPUShader.AllocArray_2iv( shader_name, uniform_name, count );
HYP_GPUShader.AllocArray_3iv( shader_name, uniform_name, count );
HYP_GPUShader.AllocArray_4iv( shader_name, uniform_name, count );
  • shader_name - [STR127] - shader name.
  • uniform_name - [STR64] - uniform array name.
  • count - [INTEGER] - number of elements of the array.
Exemple
HYP_GPUShader.AllocArray_1iv( "convolutionShader", "kernel", 9 );

SetArrayElement_{1|2|3|4}iv

SetArrayElement_{1|2|3|4}iv allows to initialize an element of an uniform array.
Syntaxe
HYP_GPUShader.SetArrayElement_1iv( shader_name, uniform_name, index, x );
HYP_GPUShader.SetArrayElement_2iv( shader_name, uniform_name, index, x, y );
HYP_GPUShader.SetArrayElement_3iv( shader_name, uniform_name, index, x, y, z );
HYP_GPUShader.SetArrayElement_4iv( shader_name, uniform_name, index, x, y, z, w );
  • shader_name - [STR127] - shader name.
  • uniform_name - [STR64] - uniform array name.
  • index - [INTEGER] - element index.
  • x, y, z, w - [INTEGER] - element value.
Exemple
HYP_GPUShader.AllocArray_1iv( "convolutionShader", "kernel", 9 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 0, 1.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 1, 2.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 2, 1.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 3, 2.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 4, 4.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 5, 2.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 6, 1.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 7, 2.0 );
HYP_GPUShader.SetArrayElement_1iv( "convolutionShader", "kernel", 8, 1.0 );

AllocArray_{1|2|3|4}fv

AllocArray_{1|2|3|4}fv allows to allocate an array of {1|2|3|4}D real in order to create an uniform array.
Syntaxe
HYP_GPUShader.AllocArray_1fv( shader_name, uniform_name, count );
HYP_GPUShader.AllocArray_2fv( shader_name, uniform_name, count );
HYP_GPUShader.AllocArray_3fv( shader_name, uniform_name, count );
HYP_GPUShader.AllocArray_4fv( shader_name, uniform_name, count );
  • shader_name - [STR127] - shader name.
  • uniform_name - [STR64] - uniform array name.
  • count - [INTEGER] - number of elements of the array.
Exemple
HYP_GPUShader.AllocArray_2fv( "convolutionShader", "offset", 9 );

SetArrayElement_{1|2|3|4}fv

SetArrayElement_{1|2|3|4}fv allows to initialize an element of an uniform array.
Syntaxe
HYP_GPUShader.SetArrayElement_1fv( shader_name, uniform_name, index, x );
HYP_GPUShader.SetArrayElement_2fv( shader_name, uniform_name, index, x, y );
HYP_GPUShader.SetArrayElement_3fv( shader_name, uniform_name, index, x, y, z );
HYP_GPUShader.SetArrayElement_4fv( shader_name, uniform_name, index, x, y, z, w );
  • shader_name - [STR127] - shader name.
  • uniform_name - [STR64] - uniform array name.
  • index - [INTEGER] - element index.
  • x, y, z, w - [REAL] - element value.
Exemple
HYP_GPUShader.AllocArray_2fv( "convolutionShader", "offset", 9 );

local image_width = 0.0;
local image_height = 0.0;

image_width, image_height = HYP_Texture.GetDimensions( "wallpaper" );

local step_w = 1.0/image_width;
local step_h = 1.0/image_height;

HYP_GPUShader.SetArrayElement_2fv("convShader", "offset", 0, -step_w, -step_h);
HYP_GPUShader.SetArrayElement_2fv("convShader", "offset", 1, 0.0, -step_h);
HYP_GPUShader.SetArrayElement_2fv("convShader", "offset", 2, step_w, -step_h);
HYP_GPUShader.SetArrayElement_2fv("convShader", "offset", 3, -step_w, 0.0);
HYP_GPUShader.SetArrayElement_2fv("convShader", "offset", 4, 0.0, 0.0);
HYP_GPUShader.SetArrayElement_2fv("convShader", "offset", 5, step_w, 0.0);
HYP_GPUShader.SetArrayElement_2fv("convShader", "offset", 6, -step_w, step_h);
HYP_GPUShader.SetArrayElement_2fv("convShader", "offset", 7, 0.0, step_h);
HYP_GPUShader.SetArrayElement_2fv("convShader", "offset", 8, step_w, step_h);


GeeXLab demos


GLSL - Mesh exploder


PhysX 3 cloth demo


Normal visualizer with GS


Compute Shaders test on Radeon


Raymarching in GLSL



Misc
>Texture DataPack #1
>Asus Silent Knight CPU Cooler
Page generated in 0.0037460327148438 seconds.