Recent Posts

Pages: 1 ... 3 4 [5] 6 7 ... 10
42
English forum / GLSL Hacker 0.7.0.0 released
« Last post by JeGX on June 23, 2014, 09:35:30 PM »
A new dev version of GLSL Hacker is ready for Windows 64-bit, Lionux 64-bit and OS X.

You can download it from this page:
http://www.geeks3d.com/glslhacker/download.php

Changelog:
Quote
Version 0.7.0.0 - 2014.06.21
-----------------------------
* fixed a bug with AntTweakBar plugin under Windows with AMD Radeon cards
  that made the application to crash time to time at the end of a scene.
- removed all atomic_counter_xxxx() functions from gh_renderer.   They are
  replaced by the low level functions of the gh_gpu_buffer lib.
* bugfix: the gh_camera.bind() function no longer update the fixed pipeline
  if OpenGL core profile is used.
+ added OpenGL debug GL_ARB_debug_output support via the gl_debug_profile="1"
  in the XML window node.
+ added memory_barrier() to gh_renderer lib.
+ added vertices_to_gpu_buffer(), vertices_from_gpu_buffer()
  and set_vertex_source() to vertex_pool lib.
- removed all shader_storage_buffer_xxxxx() functions from vertex_pool lib.
+ added set_shader_storage_block_binding() to gh_gpu_program lib.
+ added set_automatic_uniform_state() to gh_object lib.
* fixed a threading bug in the waitscreen + progress bar when scene contains errors.
+ added gh_gpu_buffer, a new lib for managing GPU buffers in an unified way.
+ added get_uniform_block_size(), get_uniform_block_index()
  and set_uniform_block_binding() to gh_gpu_program lib.
- removed all ub_xxx() functions from gh_gpu_program lib.


Version 0.6.4.5 - 2014.06.08
-----------------------------
+ added support of transparent windows (alpha value) in OS X version.
+ added drag and drop support in the OS X version.
! OSX version: now GLSL Hacker stores the last position of the window
  and uses it for the next launch (useful with the drag and drop).
+ added FreeImage plugin support in the OS X version.
+ added a set of functions to manage custom dynamic libraries: gh_utils.dylib_xxx().
  Thanks to these functions, you can use GLSL Hacker as a super window manager and code
  your own 3D routines in the dynamic lib in C/C++.   
43
English forum / GPU buffers
« Last post by JeGX on June 23, 2014, 03:31:33 PM »
GPU buffers are a powerful new feature of GLSL Hacker 0.7.0+. A GPU buffer is a wrapper around OpenGL hardware buffer objects. You can easily create an uniform or shader storage buffer, set values and use the buffer in a GLSL shader.

Here is a code snippet (in Lua) that illustrates how to use GPU buffers functions of the new gh_gpu_buffer lib:

Code: [Select]
storage_size = 32 -- memory size in bytes for two vec4
flags = ""
ssbo = gh_gpu_buffer.create("SHADER_STORAGE", "GL_DYNAMIC_READ", storage_size, flags)
gh_gpu_buffer.bind(ssbo)

gh_gpu_buffer.map(ssbo)

buffer_offset_bytes = 0
gh_gpu_buffer.set_value_4f(ssbo, buffer_offset_bytes, x0, y0, z0, w0)

buffer_offset_bytes = buffer_offset_bytes + 16
gh_gpu_buffer.set_value_4f(ssbo, buffer_offset_bytes, x1, y1, z1, w1)

gh_gpu_buffer.unmap(ssbo)

gh_gpu_buffer.unbind(ssbo)

binding_point_index = 3
gh_gpu_buffer.bind_base(ssbo, binding_point_index)


More complete examples are available in the code sample pack:

- host_api/gl-310-arb-uniform-buffer/
- host_api/gl-420-arb-atomic_counters/
- host_api/gl-430-arb-shader-storage-buffer-object/
- host_api/gl-440-arb-bindless-texture/

All these code samples use GPU buffers to share data with GLSL programs.
44
English forum / User plugins in C/C++
« Last post by JeGX on June 23, 2014, 03:04:35 PM »
GLSL Hacker 0.7.0+ brings the support of user plugins (or dynamic/shared libs: *.dll under Windows, *.so under Linux and *.dylib under OS X). These dynamic libraries must implement the following functions:

Code: [Select]
int gxl_dylib_start(void* render_window, int width, int height, const char* data, void* user_data);
int gxl_dylib_stop(const char* data, void* user_data);
int gxl_dylib_frame(float elapsed_time, const char* data, void* user_data);
int gxl_dylib_resize(int width, int height, const char* data, void* user_data);
int gxl_dylib_set_message(const char* message);
char* gxl_dylib_get_message();


render_window is a pointer on the following data structure:
Code: [Select]
struct RenderWindowData_v1
{
#if _WINDOWS 
  HDC _dc; // Device context.
  HWND _hwnd; // Handle on the 3D window.
  HGLRC _glrc; // OpenGL context.
#endif

#if _OSX
  void* _glrc; // OpenGL context.
#endif

#if _LINUX
  Display* _display; // not set, alwyas = 0
  Window _window; // not set, alwyas = 0
  void* _glrc; // OpenGL context.
#endif
};

Once your DLL is coded with these functions, you can load it and use it in GLSL Hacker:

INIT script:
Code: [Select]
dlib = gh_utils.dylib_load(dylib_filename)
plugin_data = ""
gh_utils.dylib_start(dlib, winW, winH, plugin_data)



FRAME script :
Code: [Select]
plugin_data = ""
gh_utils.dylib_frame(dlib, elapsed_time, plugin_data)


SIZE script :
Code: [Select]
winW, winH = gh_window.getsize(0)
plugin_data = ""
gh_utils.dylib_resize(dlib, winW, winH, plugin_data)


TERMINATE script :
Code: [Select]
plugin_data = ""
gh_utils.dylib_stop(dlib, plugin_data)
gh_utils.dylib_unload(dlib)

You can use the plugin_data variable to pass arbitrary string to the plugin.

A complete demo (including the DLL source code in C/C++ for Windows and OS X) is available in the host_api/User_Plugin/ folder of the code sample pack.

This demo initializes and draws a simple triangle:




45
Forum en français / Plugin utilisateur en C/C++
« Last post by JeGX on June 23, 2014, 02:52:22 PM »
GLSL Hacker 0.7.0+ apporte le support des plugins ou DLLs utilisateurs. Ces librairies dynamiques doivent implémenter les fonctions suivantes:

Code: [Select]
int gxl_dylib_start(void* render_window, int width, int height, const char* data, void* user_data);
int gxl_dylib_stop(const char* data, void* user_data);
int gxl_dylib_frame(float elapsed_time, const char* data, void* user_data);
int gxl_dylib_resize(int width, int height, const char* data, void* user_data);
int gxl_dylib_set_message(const char* message);
char* gxl_dylib_get_message();

render_window pointe sur la structure suivante:

Code: [Select]
struct RenderWindowData_v1
{
#if _WINDOWS 
  HDC _dc; // Device context.
  HWND _hwnd; // Handle on the 3D window.
  HGLRC _glrc; // OpenGL context.
#endif

#if _OSX
  void* _glrc; // OpenGL context.
#endif

#if _LINUX
  Display* _display; // not set, alwyas = 0
  Window _window; // not set, alwyas = 0
  void* _glrc; // OpenGL context.
#endif
};

Une fois que vous avez codé votre DLL avec ces fonctions, il suffit de la charger dans GLSL Hacker avec gh_utils.dylib_load():

Script INIT:
Code: [Select]
dlib = gh_utils.dylib_load(dylib_filename)
plugin_data = ""
gh_utils.dylib_start(dlib, winW, winH, plugin_data)

Il ne reste plus qu'à appeller les fonctions start, frame, resize, etc.

Script FRAME:
Code: [Select]
plugin_data = ""
gh_utils.dylib_frame(dlib, elapsed_time, plugin_data)

Script SIZE:
Code: [Select]
winW, winH = gh_window.getsize(0)
plugin_data = ""
gh_utils.dylib_resize(dlib, winW, winH, plugin_data)


Script TERMINATE:
Code: [Select]
plugin_data = ""
gh_utils.dylib_stop(dlib, plugin_data)
gh_utils.dylib_unload(dlib)


La variable plugin_data permet de transmettre une chaine de caractères au plugin. Cette chaine de caractères vous permet d'envoyer des informations quelconques au plugin.

Une demo complete (avec les codes sources de la DLL pour Windows et OS X) est disponible dans le code sample pack dans le répertoire
host_api/User_Plugin/

Cette demo charge un plugin C++/OpenGL tout simple qui initialise et dessine un triangle:


46
Forum en français / Fenetres transparentes sous Mac OS X
« Last post by JeGX on June 23, 2014, 02:18:19 PM »
La version 0.6.4.5 de GLSL Hacker apporte le support des fenetres transparentes sous OS X. Par default une fenetre est totalement opaque. Pour faire une fenetre transparente, il suffit de changer sa valeur alpha dans le noeud XML scene:

Code: [Select]
<window name="win3d01" title="3DS loading"
                 width="800" height="600" alpha="0.6"
                gl_version_major="3" gl_version_minor="2" />

Si alpha=1.0, la fenetre est totalement opaque, si alpha=0.0, la fenetre est totalement transparente.

47
English forum / Transparent windows under Mac OS X
« Last post by JeGX on June 23, 2014, 02:14:29 PM »
The version 0.6.4.5 of GLSL Hacker brings the support of transparent windows under Mac OS X. By default a window is fully opaque. To make a transparent window, just set its alpha value in the XML window node:

Code: [Select]
<window name="win3d01" title="3DS loading"
                 width="800" height="600" alpha="0.6"
                gl_version_major="3" gl_version_minor="2" />

if alpha=1.0, the window is fully opaque, if alpha=0.0, the window is fully transparent.

48
Forum en français / Le plugin FreeImage (GLSL Hacker 0.6.4.3+)
« Last post by JeGX on June 23, 2014, 02:06:40 PM »
Depuis la version 0.6.4.3, GLSL Hacker est dispo avec un nouveau plugin pour charger les images. Ce plugin est basé sur FreeImage, une puissante librairie de manipulation d'images. Elle supporte des tonnes de formats ainsi que les formats HDR (128-bit par pixel ou 4 float par pixel).

GLSL Hacker intègre depuisle début un plugin basé sur la lib stb pour charger les images. La question est: comment sélectionner le plugin qui sera utilisé pour charger les images?

La réponse à cette question est toute simple: il faut utiliser la fonction set_current_image_codec() de la lib gh_texture:

Code: [Select]
gh_texture.set_current_image_codec(nom_du loader)

Pour utiliser le plugin FreeImage:
Code: [Select]
gh_texture.set_current_image_codec("FreeImage")

Maintenant toutes les fonctions de chargement d'images utiliseront le plugin FreeImage.

Pour revenir au plugin intégré:
Code: [Select]
gh_texture.set_current_image_codec("stb")
49
English forum / FreeImage plugin (GLSL Hacker 0.6.4.3+)
« Last post by JeGX on June 23, 2014, 01:59:16 PM »
From the version 0.6.4.3, GLSL Hacker is shipped with a new image loader plugin based on the popular FreeImage library. FreeImage is a powerful library to manage images and supports a lot of formats as well as 128-bit formats (each channel is coded on a float). But GLSL Hacker comes already with a built-in image loader (based on STB). So the question: how to choose the image loader?

This simple question has a simple answer: the set_current_image_codec() function of gh_texture lib:

Code: [Select]
gh_texture.set_current_image_codec(plugin_name)

To use the FreeImage loader, just do:
Code: [Select]
gh_texture.set_current_image_codec("FreeImage")

Now all texture functions that load an image file will use the FreeImage plugin.

To use the default image loader:
Code: [Select]
gh_texture.set_current_image_codec("stb")
50
3D-Tech News Around The Web / (WebGL) Vermeer's ‘The Milkmaid’ in 3D
« Last post by Stefan on June 21, 2014, 01:44:35 PM »
Quote
[non-Blender] ‘The Milkmaid’ in 3D

    This model was made in 3DS Max, but I thought it was inspiring enough to share here: Kou-c30 re-used a 3D model by Eiichi Nagai to create this interactive view of one of the world’s most famous painting: The Milkmaid (Het Melkmeisje) by Johannes Vermeer. I think it’s a fascinating new way to explore artwork!
   
Pages: 1 ... 3 4 [5] 6 7 ... 10