JeGX HackLAB


Archive for the ‘OpenGL’ Category

(GeeXLab) Bump Mapping et Self Shadow

without comments

GeeXLab demo
Bump mapping – front face


Read the rest of this entry »

Written by JeGX

August 3rd, 2009 at 4:26 pm

HowTo: Matrice de Projection Perspective en OpenGL

with 2 comments

Written by JeGX

July 28th, 2009 at 9:48 am

How To Linearize the Depth Value

without comments

Here is a GLSL code snippet to convert the exponential depth to a linear value:

float f=1000.0;
float n = 0.1;
float z = (2 * n) / (f + n - texture2D( texture0, texCoord ).x * (f - n));

where:
- f = camera far plane
- n = camera near plane
- texture0 = depth map.

[source]

Written by JeGX

February 6th, 2009 at 1:20 pm

Posted in OpenGL

Tagged with , , ,

The Art of Texturing in GLSL is Now a Resource of OpenGL.org

with one comment

The tutorial The Art of Texturing Using the OpenGL Shading Language has been included in OpenGL.org website in OpenGL API OpenGL Shading Language Sample Code & Tutorials section. Rather cool… ;)

OpenGL.org

Written by JeGX

October 22nd, 2008 at 5:04 pm

Posted in OpenGL

Tagged with , , ,

Vertex Displacement Mapping in GLSL Now Available on Radeon!

with one comment

As I said in this news, the release of Catalyst 8.10 BETA comes with a nice bugfix: vertex texture fetching is now operational on Radeon (at least on my Radeon HD 4850). From 2 or 3 months, Catalyst makes it possible to fetch texture from inside a vertex shader. You can see with GPU Caps Viewer how many texture units are exposed in a vertex shader for your Radeon:


But so far, vertex texture fetching in GLSL didn’t work due to a bug in the driver. But now this is an old story, since VTF works well. For more details about vertex displacement mapping, you can read this rather old (2 years!) tutorial: Vertex Displacement Mapping using GLSL.

This very cool news makes me want to create a new benchmark based on VTF!

I’ve only tested the XP version of Catalyst 8.10. If someone has tested the Vista version, feel free to post a comment…

Next step for ATI driver team: enable geometry texture fetching: allows texture fetching inside a geometry shader…

See you soon!

Written by JeGX

September 30th, 2008 at 5:29 pm

Saturate function in GLSL

with 6 comments

During the conversion of shaders written in Cg/HLSL, we often find the saturate() function. This function is not valid in GLSL even though on NVIDIA, the GLSL compiler accepts it (do not forget that NVIDIA’s GLSL compiler is based on Cg compiler). But ATI’s GLSL compiler will reject saturate() with a nice error. This function allows to limit the value of a variable to the range [0.0 - 1.0]. In GLSL, there is a simple manner to do the same thing: clamp().

Cg code:

float3 result = saturate(texCol0.rgb - Density*(texCol1.rgb));

GLSL equivalent:

vec3 result = clamp(texCol0.rgb - Density*(texCol1.rgb), 0.0, 1.0);

BTW, don’t forget all float4, float3 and float2 which correct syntax in GLSL is vec4, vec3 and vec2.

Lors de la conversion de shaders écrits en Cg/HLSL, on trouve souvent la fonction saturate(). Cette fonction n’est pas valide en GLSL bien que sur les NVIDIA le compilateur l’accepte (n’oublions pas que le compilateur GLSL de NVIDIA repose sur le compilateur Cg). Mais le compilateur GLSL d’ATI générera une belle erreur à la vue de saturate(). Cette fonction sert à limité la valeur d’une variable entre 0.0 et 1.0. En GLSL il y un moyen tout simple de faire la même chose: clamp().

Code Cg:

float3 result = saturate(texCol0.rgb - Density*(texCol1.rgb));

Equivalent GLSL:

vec3 result = clamp(texCol0.rgb - Density*(texCol1.rgb), 0.0, 1.0);

Au passage lors des conversions, n’oubliez pas les float4, float3 et float2 qui s’écrivent en GLSL en vec4, vec3 et vec2.

Written by JeGX

July 9th, 2008 at 7:15 pm

GLSL support in Intel graphics drivers

without comments

A user from oZone3D.Net forum asked me some info about the GLSL support of Intel graphics chips. It’s wellknown (sorry Intel) that Intel has a bad OpenGL support in its Windows drivers and even if Intel’s graphics drivers support OpenGL 1.5, there is still a lack of GLSL support. We can’t find the GL_ARB_shading_language_100 extension (this extension means the graphics driver supports the OpenGL shading language) and this extension should be supported by any OpenGL 1.5 compliant graphics driver. You can use GPU Caps Viewer to check for the avaibility of GL_ARB_shading_language_100 (in OpenGL Caps tab).

Here is an example of a Intel’s graphics driver that support openGL 1.5 without supporting GLSL:
- Mobile IntelR 965 Express Chipset Family

For more examples, look at users’s submissions here: www.ozone3d.net/gpu/db/

Okay this is my analysis, but what is the Intel point of view? Here is the answer:
- x3100 & OpenGL Shader (GLSL) thread
- Intel’s answer

I think GLSL support with Windows is not a priority for Intel…

Written by JeGX

June 11th, 2008 at 11:24 am

GLSL float to RGBA8 encoder

without comments

Packing a [0-1] float value into a 4D vector where each component will be a 8-bits integer:

vec4 packFloatToVec4i(const float value)
{
  const vec4 bitSh = vec4(256.0*256.0*256.0, 256.0*256.0, 256.0, 1.0);
  const vec4 bitMsk = vec4(0.0, 1.0/256.0, 1.0/256.0, 1.0/256.0);
  vec4 res = fract(value * bitSh);
  res -= res.xxyz * bitMsk;
  return res;
}

Unpacking a [0-1] float value from a 4D vector where each component was a 8-bits integer:

float unpackFloatFromVec4i(const vec4 value)
{
  const vec4 bitSh = vec4(1.0/(256.0*256.0*256.0), 1.0/(256.0*256.0), 1.0/256.0, 1.0);
  return(dot(value, bitSh));
}

Source of these codes: Gamedev forums

Written by JeGX

June 4th, 2008 at 10:36 am

NVIDIA Forceware 174.20: OpenGL Extensions

without comments

[French]
Voici la liste des extensions OpenGL supportées par les pilotes Forceware 174.20.
[/French]
[English]
Here is the list of OpenGL extensions supported by Forceware 174.20 drivers.
[/English]

OpenGL Extensions: 161 extensions

Read the rest of this entry »

Written by JeGX

March 16th, 2008 at 4:39 pm

Posted in OpenGL

Tagged with , ,

ATI Catalyst 8.3: OpenGL Extensions

without comments

[French]
Voici la liste des extensions OpenGL supportées par les pilotes Catalyst 8.3. Il y en a 96.
[/French]
[English]
Here is the list of OpenGL extensions supported by Catalyst 8.3 drivers. There are 96 extensions.
[/English]

  • Drivers Version: 8.471.0.0 – Catalyst 08.3
  • ATI Catalyst Version String: 08.3
  • ATI Catalyst Release Version String: 8.471-080225a1-059746C-ATI

Read the rest of this entry »

Written by JeGX

March 16th, 2008 at 4:17 pm

Posted in OpenGL

Tagged with , ,