Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - JeGX

Pages: [1] 2 3 ... 107
New graphics driver based on the new 440 family is available.

Downloads links, changes, OpenGL and Vulkan info:

GeeXLab - english forum / Shadertoy Demopack v2019.10-21
« on: October 21, 2019, 02:25:58 PM »
The shadertoy demopack has been updated.

- Shadertoy demopack for GeeXLab
- GeeXLab downloads

New demos:

- shadertoy demo: Organic Dodecahedron.
- in demopack: gl-32-shadertoy-multipass/gl32-organic-dodecahedron/
Shadertoy demo ported to GeeXLab

- shadertoy demo: Voodoo.
- in demopack: gl-32-shadertoy-02/voodoo/
Shadertoy demo ported to GeeXLab

- shadertoy demo: ShaderTober - Sling.
- in demopack: gl-32-shadertoy-02/shadertober-sling/
Shadertoy demo ported to GeeXLab

- shadertoy demo: Rounded Box Parametrization.
- in demopack: gl-32-shadertoy-02/rounded-box-parametrization/
Shadertoy demo ported to GeeXLab

- shadertoy demo: Faux Layered Extrusion.
- in demopack: gl-32-shadertoy-02/faux-layered-extrusion/
Shadertoy demo ported to GeeXLab

- shadertoy demo: Noise - Basic - 1D.
- in demopack: gl-32-shadertoy-02/noise-basic-1d/
Shadertoy demo ported to GeeXLab

- shadertoy demo: Futuristic 3D circle.
- in demopack: gl-32-shadertoy-multipass/gl32-futuristic-3d-circle/
Shadertoy demo ported to GeeXLab

- shadertoy demo: Ethics Gradient.
- in demopack: gl-32-shadertoy-multipass/gl32-ethics-gradient/
Shadertoy demo ported to GeeXLab

3D-Tech News Around The Web / MySQL Raytracer
« on: October 21, 2019, 01:55:46 PM »
This is a raytracing engine contained in a single Mysql SELECT statement. In the beginning of the code there are a few parameters that can be modified. The scene can be specified using the @triangles and @squares parameters, but everything is explained in the comments. The whole query returns a bitmap file which can be written to the filesystem using the "INTO DUMPFILE" syntax at the end of the query, if mysql has filesystem write permissions.

The raytracer supports shadows and reflections, which makes it, to my knowledge, the most advanced MySQL raytracer on the market right now. However, it is not really polished and kinda slow. Since I didn't really know how to present this work in a demoparty friendly way, I just included two finished renderings.

To run this code, you need a running mysql-server to execute the query. The code is only tested on mysql version 5.7.22 running on Ubuntu 16.04. MySQL also needs file write permissions to write the bmp file to the filesystem.

If you want to render more than a few pixels worth you usually also have to increase mysql's memory and execution time limit settings.


MySQL Raytracer

MySQL Raytracer

3D-Tech News Around The Web / Vulkan API specifications 1.1.126 released
« on: October 21, 2019, 01:49:54 PM »
Change log for October 21, 2019 Vulkan 1.1.126 spec update:

  * Update release number to 126

Github Issues:

  * Update the elink:VkAccessFlagBits etext:VK_ACCESS_MEMORY_* flags
    definition to make clear that ename:VK_ACCESS_MEMORY_READ_BIT and
    ename:VK_ACCESS_MEMORY_WRITE_BIT are meant to be equivalent to setting
    all applicable etext:READ and etext:WRITE access flags, and update the
    <<synchronization-access-types-supported, supported access types>> table
    accordingly (public pull request 1014).
  * Remove misleading NOTE in the <<synchronization-dependencies-chains>>
    section (public pull request 1048).
  * Clarify the memory mapping NOTE about invalidation described for
    flink:vkInvalidateMappedMemoryRanges (public pull request 1049).
  * Fix label for flink:vkCmdWaitEvents VUID 02803 (public pull request
  * Styleguide fixes to several NOTES in the <<synchronization>> chapter
    (public pull request 1057).
  * Markup fix to <<features-features-timelineSemaphore>> section (public
    pull request 1058).
  * Convert some external links to `https` protocol (public pull request
  * Remove unsupported nested links inside table captions (public pull
    request 1067 + followon tweak to make 'allchecks' target pass).

Internal Issues:

  * Restrict the SPIR-V code:Invariant decoration to only be used with
    code:Output variables in the <<spirvenv-module-validation, Validation
    Rules within a Module>> section (internal issue 1832).
  * Clarify that the <<features-independentResolve, independentResolve>>
    feature implies support for the <<features-independentResolveNone,
    independentResolveNone>> feature (internal issue 1848).
  * Clarify self-contradictory language for slink:VkSubpassDescription to
    say that resolves only happen within the render area (internal issue
  * Add valid usage statements for slink:VkMemoryAllocateInfo and
    corresponding language to elink:VkExternalMemoryFeatureFlagBitsKHR to
    restrict implementations and applications from using both an external
    host memory allocation and dedicated allocation (internal merge request


3D-Tech News Around The Web / Vulkan API specifications 1.1.125 released
« on: October 21, 2019, 01:48:18 PM »
Change log for October 13, 2019 Vulkan 1.1.125 spec update:

  * Update release number to 125.

Github Issues:

  * Allow slink:VkRenderPassFragmentDensityMapCreateInfoEXT to extend
    slink:VkRenderPassCreateInfo2KHR in `vk.xml` (public issue 1027).
  * Fix markup in `<<VK_EXT_external_memory_dma_buf>>` appendix (public pull
    request 1051).
  * Update .gitignore (public pull request 1052).

Internal Issues:

  * Disallowed slink:VkEvent from participating in queue family ownership
    transfers in the <<devsandqueues-index, Queue Family Index>> section
    (internal issue 1691).
  * Relax language describing default NT handle access rights for
    slink:VkExportMemoryWin32HandleInfoKHR and
    slink:VkExportSemaphoreWin32HandleInfoKHR (internal issue 1838).
  * Fix markup for slink:VkDeviceCreateInfo valid usage statement 00372 to
    remove imbedded asciidoctor conditionals by splitting it into two VUs
    (internal issue 1846).
  * Clarify lifetime of samplers used as immutable samplers in
    slink:VkDescriptorSetLayoutBinding (internal issue 1849).
  * Add a valid usage statement prohibiting flink:vkCmdBeginQuery on
    timestamp queries (internal issue 1851).
  * Correct some <<Precision of GLSL.std.450 Instructions, SPIR-V
    instruction precisions>> (internal merge request 3391).
  * Fix a typo in flink:vkQueueBindSparse valid usage statement 03245
    (internal merge request 3394).

New Extensions

  * `<<VK_KHR_spirv_1_4>>`


New extensions:
- VK_KHR_spirv_1_4

3D-Tech News Around The Web / Vulkan API specifications 1.1.124 released
« on: October 21, 2019, 01:46:49 PM »
Change log for October 6, 2019 Vulkan 1.1.124 spec update:

  * Update release number to 124.

Github Issues:

  * Fix Makefile SPECREMARK macro to work when not building in a git tree
    (public issue 992).
  * Ignore pname:aspectMask for unused attachments in
    slink:VkSubpassDescription2KHR valid usage statements (public pull
    request 1028).
  * Minor markup / spelling fixes (public pull requests 1035, 1045).

Internal Issues:

  * Fix markup in Valid Usage statement for slink:VkCreateFramebuffer
    (internal issue 1823).
  * Add a new <<synchronization-signal-operation-order, _signal operation
    order_>> section to the synchronization chapter which describes in
    detail the ordering guarantees provided by the API between fence and
    semaphore signal operations (internal merge request 3368).
  * Move generated `appendix/meta/` files into the Makefile GENERATED
    directory (internal merge request 3381).

New Extensions

  * `<<VK_KHR_shader_clock>>`
  * `<<VK_KHR_timeline_semaphore>>`


New extensions:
- VK_KHR_shader_clock
- VK_KHR_timeline_semaphore

Zero is a small graphics app that uses JavaScript to replicate the functionality of a GPU and uses the terminal to display its rendered output via nodejs' stdout. Zero was written for fun as well as to see how far one could reasonably push JavaScript performance. Rendering has been tested on Windows, OSX and Linux terminals.


Zero -A graphics pipeline implemented in JavaScript and rendered to the terminal

When you set up your render passes in Vulkan you have to set load and store operations. They let you specify what it should be done with your images at the render pass boundaries – discard/clear the contents or keep them in memory.

It may be surprising, especially if you have a background in desktop graphics, that you must specify these operations upfront. They even look like duplicates, since you can still clear the screen at the beginning of your command buffer.

The reason why we need to specify these operations upfront is that it allows for some special optimizations in tile-based GPUs (virtually all mobile GPUs). A load operation is the only chance to clear the screen efficiently on mobile! In order to understand the deceptive importance of this topic we need to start a brief overview of the unique challenges of mobile GPUs.


3D-Tech News Around The Web / Raw DirectX 12 tutorial
« on: October 21, 2019, 01:35:11 PM »
An introduction to writing a simple "Hello Triangle" DirectX 12 application. DirectX 12 is the latest low level graphics API for writing Windows applications, supporting ray tracing, compute, rasterization, and much more.


this is a collection of demos done by Nicolas Barradeau, it's meant to help newcomers understand the different aspects of creative coding and datavisualization.


Creative coding and data visualization resources

Quick test on a Core i7-8700K (win10 64-bit 1903):

Vulkan device info:
- device 0: Intel(R) UHD Graphics 630
- API version: 1.1.120
- vendorID: 32902
- deviceID: 16018
- driver version: 1645723
- extensions: 57
    - VK_KHR_swapchain (version: 70)
    - VK_KHR_external_memory (version: 1)
    - VK_KHR_external_memory_win32 (version: 1)
    - VK_EXT_external_memory_host (version: 1)
    - VK_KHR_external_semaphore (version: 1)
    - VK_KHR_external_semaphore_win32 (version: 1)
    - VK_KHR_external_fence (version: 1)
    - VK_KHR_external_fence_win32 (version: 1)
    - VK_KHR_win32_keyed_mutex (version: 1)
    - VK_KHR_get_memory_requirements2 (version: 1)
    - VK_KHR_bind_memory2 (version: 1)
    - VK_KHR_dedicated_allocation (version: 1)
    - VK_KHR_sampler_mirror_clamp_to_edge (version: 1)
    - VK_KHR_maintenance1 (version: 1)
    - VK_KHR_maintenance2 (version: 1)
    - VK_KHR_maintenance3 (version: 1)
    - VK_KHR_shader_draw_parameters (version: 1)
    - VK_KHR_push_descriptor (version: 1)
    - VK_KHR_descriptor_update_template (version: 1)
    - VK_KHR_multiview (version: 1)
    - VK_KHR_shader_float16_int8 (version: 1)
    - VK_KHR_16bit_storage (version: 1)
    - VK_KHR_8bit_storage (version: 1)
    - VK_EXT_shader_subgroup_ballot (version: 1)
    - VK_EXT_shader_subgroup_vote (version: 1)
    - VK_KHR_storage_buffer_storage_class (version: 1)
    - VK_KHR_variable_pointers (version: 1)
    - VK_KHR_relaxed_block_layout (version: 1)
    - VK_EXT_sampler_filter_minmax (version: 1)
    - VK_KHR_device_group (version: 1)
    - VK_KHR_sampler_ycbcr_conversion (version: 1)
    - VK_EXT_post_depth_coverage (version: 1)
    - VK_EXT_shader_viewport_index_layer (version: 1)
    - VK_EXT_shader_stencil_export (version: 1)
    - VK_EXT_conservative_rasterization (version: 1)
    - VK_EXT_sample_locations (version: 1)
    - VK_KHR_draw_indirect_count (version: 1)
    - VK_KHR_image_format_list (version: 1)
    - VK_EXT_vertex_attribute_divisor (version: 3)
    - VK_EXT_descriptor_indexing (version: 2)
    - VK_EXT_inline_uniform_block (version: 1)
    - VK_KHR_create_renderpass2 (version: 1)
    - VK_KHR_swapchain_mutable_format (version: 1)
    - VK_KHR_driver_properties (version: 1)
    - VK_KHR_vulkan_memory_model (version: 3)
    - VK_EXT_conditional_rendering (version: 1)
    - VK_EXT_depth_clip_enable (version: 1)
    - VK_EXT_scalar_block_layout (version: 1)
    - VK_KHR_imageless_framebuffer (version: 1)
    - VK_EXT_buffer_device_address (version: 2)
    - VK_EXT_host_query_reset (version: 1)
    - VK_KHR_uniform_buffer_standard_layout (version: 1)
    - VK_EXT_separate_stencil_usage (version: 1)
    - VK_EXT_fragment_shader_interlock (version: 1)
    - VK_EXT_memory_budget (version: 1)
    - VK_INTEL_performance_query (version: 1)
    - VK_EXT_shader_demote_to_helper_invocation (version: 1)

This driver adds the VK_EXT_shader_demote_to_helper_invocation extension but there's no sign of VK_KHR_buffer_device_address.  Still Vulkan 1.1.120 and OpenGL 4.6 with 250 extensions (GL=230 and WGL=20) like previous v7212.

In this post we’ll be looking at integrating Dear ImGui in a custom Vulkan renderer. The audience I’m targeting is beginners still struggling with Vulkan. You should however have a basic Vulkan renderer already up and running. I followed Alexander Overvoorde’s amazing tutorial myself and I will use it as an example. The code is entirely available at vulkan-tutorial (go to the bottom of the page) if you’re willing to start from there as well. The first chapters explain very carefully how to install the Vulkan SDK and deal with dependencies.


GeeXLab - english forum / Windows 10 Dark Theme Switch
« on: October 04, 2019, 12:01:28 PM »
The Windows 10 Dark Theme Switch is an utility and a demo at the same time. Utility because this small application allows to quickly enable or disable the dark theme for applications like the File Explorer, a feature introduced in Windows 10 version 1809 and higher. The dark theme can be enabled or disabled from Windows Settings, but and that’s the interesting point, it can be turned ON/OFF via the registry. And the nice thing with the registry technique, is that your version of Windows 10 doesn’t need to be activated…

Article and download link:

GeeXLab demo: Windows 10 Dark Theme Switch

GeeXLab - english forum / H4shG3n 0.3.2 hash code generator released
« on: October 04, 2019, 11:56:05 AM »
H4shG3n has been updated with GeeXLab 0.29.3 (Windows and Linux) and 0.29.2 (Raspberry Pi).

Release notes and download links:


GeeXLab - english forum / Shadertoy Demopack - v2019.10-04
« on: October 04, 2019, 11:47:32 AM »
The shadertoy demopack has been updated.

- Shadertoy demopack for GeeXLab
- GeeXLab downloads

Some new demos:

- Demo: gl-32-shadertoy-02/planet-fall/
- shadertoy link.
Shadertoy demo ported to GeeXLab

- Demo: gl-32-shadertoy-02/happy-jumping/
- shadertoy link.
Shadertoy demo ported to GeeXLab

- Demo: gl-32-shadertoy-02/protean-clouds/
- shadertoy link.
Shadertoy demo ported to GeeXLab

- Demo: gl-32-shadertoy-multipass/gl32-then-and-before-pc4k-altair/
- shadertoy link.
Shadertoy demo ported to GeeXLab

- Demo: gl-32-shadertoy-02/sphere-gears/
- shadertoy link.
Shadertoy demo ported to GeeXLab

Release notes:


Version - 2019.10.01
* (2019.10.01) [Windows, Linux] fixed a bug in the swapchain re-creation
  (after a window resizing) in the Vulkan plugin.
* (2019.10.01) fixed a crash in gh_utils.raycast_cast_ray_v2() in Python.
+ (2019.09.30) gh_utils.clipboard_get_text() now works on Linux.
+ (2019.09.30) added thread_lock_create(), thread_lock_kill_all(),
  thread_lock_acquire() and thread_lock_release() to gh_utils.
+ (2019.09.29) added support of threaded screenshot: do_screenshot_v6(),
  screenshot_kill_image_saving_thread(), screenshot_threaded_get_stats()
  added to gh_utils.
! (2019.09.26) updated ASSIMP plugin with latest ASSIMP 5.0.0 SDK.
+ (2019.09.26) added a new command line option: /append_date_to_log_file .
  This option is also present in init0.xml (append_date_to_log_file="0|1").
  Appending date to log filename looks like: _geexlab_log.20190926.175815.txt
! (2019.09.26) gh_utils.get_date_str() updated for Linux and macOS platforms.

Geeks3D's GPU Tools / GPU Caps Viewer 1.42.6 released
« on: October 01, 2019, 06:11:13 PM »
GPU Caps Viewer has been released.

Download links:

Version - 2019.10.01
* fixed a bug in GeeXLab Vulkan renderer (swapchain update after a window resizing).
! updated SPIRV shaders in GPU_Caps_Viewer/gxldemos/vk-tessellation/spirv/ folder.

The Vulkan Best Practice for Mobile Developers is collection of resources to help you develop optimized Vulkan applications for mobile platforms.


Vulkan Best Practice for Mobile Developers

3D-Tech News Around The Web / Intel Open Volume Kernel Library
« on: October 01, 2019, 05:40:02 PM »
Intel Open Volume Kernel Library (Intel Open VKL) is a collection of high-performance volume computation kernels, developed at Intel. The target users of Open VKL are graphics application engineers who want to improve the performance of their volume rendering applications by leveraging Open VKL’s performance-optimized kernels, which include volume traversal and sampling functionality for a variety of volumetric data formats. The kernels are optimized for the latest Intel® processors with support for SSE, AVX, AVX2, and AVX-512 instructions. Open VKL is part of the Intel oneAPI Rendering Toolkit and is released under the permissive Apache 2.0 license.

Open VKL provides a C API, and also supports applications written with the Intel® SPMD Program Compiler (ISPC) by also providing an ISPC interface to the core volume algorithms. This makes it possible to write a renderer in ISPC that automatically vectorizes and leverages SSE, AVX, AVX2, and AVX-512 instructions. ISPC also supports runtime code selection, thus ISPC will select the best code path for your application.

In addition to the volume kernels, Open VKL provides tutorials and example renderers to demonstrate how to best use the Open VKL API.

Open VKL 0.7.0 (alpha)

- Initial public alpha release, with support for structured, unstructured, and AMR volumes.


Intel Open Volume Kernel Library

An OpenVKL demo looks like:

Code: [Select]
#include <openvkl/openvkl.h>
#include <stdio.h>


int main()

  VKLDriver driver = vklNewDriver("ispc");

  int dimensions[] = {128, 128, 128};

  const int numVoxels = dimensions[0] * dimensions[1] * dimensions[2];

  VKLVolume volume = vklNewVolume("structured_regular");
  vklSetVec3i(volume, "dimensions", dimensions[0], dimensions[1], dimensions[2]);
  vklSetVec3f(volume, "gridOrigin", 0, 0, 0);
  vklSetVec3f(volume, "gridSpacing", 1, 1, 1);

  float *voxels = malloc(numVoxels * sizeof(float));

  if (!voxels) {
    printf("failed to allocate voxel memory!\n");
    return 1;

  // x-grad sample volume
  for (int k = 0; k < dimensions[2]; k++)
    for (int j = 0; j < dimensions[1]; j++)
      for (int i = 0; i < dimensions[0]; i++)
        voxels[k * dimensions[0] * dimensions[1] + j * dimensions[2] + i] =

  VKLData voxelData = vklNewData(numVoxels, VKL_FLOAT, voxels, 0);
  vklSetData(volume, "voxelData", voxelData);




  return 0;}


Pages: [1] 2 3 ... 107