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 4 ... 74
Slides on modules, bundlers, webgl, and glslify!


Small experimental lossless photographic image compression library with a C API and command-line interface.

It's much faster than PNG and compresses better for photographic images. This compressor often takes less than 6% of the time of a PNG compressor and produces a file that is 66% of the size. It was written in just 500 lines of C code thanks to Facebook's Zstd library.

The goal was to see if I could create a better lossless compressor than PNG in just one evening (a few hours) using Zstd and some past experience writing my GCIF library. Zstd is magical.

I'm not expecting anyone else to use this, but feel free if you need some fast compression in just a few hundred lines of C code.


3D-Tech News Around The Web / Bokeh Depth of Field in a single pass
« on: May 04, 2018, 01:50:33 PM »
When I implemented bokeh depth of field I stumbled upon a neat blending trick almost by accident. In my opinion, the quality of depth of field is more related to how objects of different depths blend together, rather than the blur itself. Sure, bokeh is nicer than gaussian, but if the blending is off the whole thing falls flat. There seems to be many different approaches to this out there, most of them requiring multiple passes and sometimes separation of what's behind and in front of the focal plane. I experimented a bit and stumbled upon a nice trick, almost by accident.


Code: [Select]
uniform sampler2D uTexture; //Image to be processed
uniform sampler2D uDepth; //Linear depth, where 1.0 == far plane
uniform vec2 uPixelSize; //The size of a pixel: vec2(1.0/width, 1.0/height)
uniform float uFar; // Far plane

const float GOLDEN_ANGLE = 2.39996323;
const float MAX_BLUR_SIZE = 20.0;
const float RAD_SCALE = 0.5; // Smaller = nicer blur, larger = faster

float getBlurSize(float depth, float focusPoint, float focusScale)
 float coc = clamp((1.0 / focusPoint - 1.0 / depth)*focusScale, -1.0, 1.0);
 return abs(coc) * MAX_BLUR_SIZE;

vec3 depthOfField(vec2 texCoord, float focusPoint, float focusScale)
 float centerDepth = texture(uDepth, texCoord).r * uFar;
 float centerSize = getBlurSize(centerDepth, focusPoint, focusScale);
 vec3 color = texture(uTexture, vTexCoord).rgb;
 float tot = 1.0;

 float radius = RAD_SCALE;
 for (float ang = 0.0; radius<MAX_BLUR_SIZE; ang += GOLDEN_ANGLE)
  vec2 tc = texCoord + vec2(cos(ang), sin(ang)) * uPixelSize * radius;

  vec3 sampleColor = texture(uTexture, tc).rgb;
  float sampleDepth = texture(uDepth, tc).r * uFar;
  float sampleSize = getBlurSize(sampleDepth, focusPoint, focusScale);
  if (sampleDepth > centerDepth)
   sampleSize = clamp(sampleSize, 0.0, centerSize*2.0);

  float m = smoothstep(radius-0.5, radius+0.5, sampleSize);
  color += mix(color/tot, sampleColor, m);
  tot += 1.0;
  radius += RAD_SCALE/radius;
 return color /= tot;

In this paper we are presenting a new real-time, screen-space technique that can be easily integrated into existing rendering pipelines and that drastically improves the quality of the lighting by adding an important near-field illumination term. It exploits a reprojection of the radiance from one frame to another to provide a theoretically infinite amount of light bounces and at the same time keeps a tight frame budget since it basically relies on the same foundation as the Horizon-Based Ambient Occlusion (HBAO) technique introduced by Bavoil et al. [1] except it uses the information gathered while computing the horizon to its maximum potential.


As a computer engineer who has spent half a decade working with caches at Intel and Sun, I’ve learnt a thing or two about cache-coherency. This was one of the hardest concepts to learn back in college – but once you’ve truly understood it, it gives you a great appreciation for system design principles.

You might be wondering why you as a software developer should care about CPU cache-design. For one thing, many of the concepts learnt in cache-coherency are directly applicable to distributed-system-architecture and database-isolation-levels as well. For instance, understanding how coherency is implemented in hardware caches, can help in better understanding strong-vs-eventual consistency. It can spur ideas on how to better enforce consistency in distributed systems, using the same research and principles applied in hardware.

For another thing, misconceptions about caches often lead to false assertions, especially when it comes to concurrency and race conditions. For example, the common refrain that concurrent programming is hard because “different cores can have different/stale values in their individual caches”. Or that the reason we need volatiles in languages like Java, is to “prevent shared-data from being cached locally”, and force them to be “read/written all the way to main memory”.


3D-Tech News Around The Web / Reducing Vulkan API call overhead
« on: May 02, 2018, 09:41:02 AM »
Vulkan is designed to have significantly smaller CPU overhead compared to other APIs like OpenGL. This is achieved by various means – the API is structured to do more work up-front, such as creating the pipeline state once and binding it many times instead of having to continuously set various state bits, and many API calls do more work per call, for example vkCmdBindVertexBuffers can bind all vertex buffer objects used by the vertex shader stage in one call. However a complex application can still end up calling various Vulkan functions tens or hundreds of thousands of times per frame. This article will look at costs associated with that, and ways to bring them down.


3D-Tech News Around The Web / GIMP 2.10.0 released
« on: April 27, 2018, 05:34:28 PM »
The long-awaited GIMP 2.10.0 is finally here! This is a huge release, which contains the result of 6 long years of work (GIMP 2.8 was released almost exactly 6 years ago!) by a small but dedicated core of contributors.

Still, to get you a quick taste of GIMP 2.10, here are some of the most notable changes:

- Image processing nearly fully ported to GEGL, allowing high bit depth processing, multi-threaded and hardware accelerated pixel processing, and more.

- Color management is a core feature now, most widgets and preview areas are color-managed.

- Many improved tools, and several new and exciting tools, such as the Warp transform, the Unified transform and the Handle transform tools.
On-canvas preview for all filters ported to GEGL.
- Improved digital painting with canvas rotation and flipping, symmetry painting, MyPaint brush support…

- Support for several new image formats added (OpenEXR, RGBE, WebP, HGT), as well as improved support for many existing formats (in particular more robust PSD importing).

- Metadata viewing and editing for Exif, XMP, IPTC, and DICOM.

- Basic HiDPI support: automatic or user-selected icon size.

- New themes for GIMP (Light, Gray, Dark, and System) and new symbolic icons meant to somewhat dim the environment and shift the focus towards content (former theme and color icons are still available in Preferences).

- And more, better, more, and even more awesome!


NVIDIA Nsight Graphics is a standalone developer tool that enables you to debug, profile, and export frames built with Direct3D (11,12), Vulkan, OpenGL, OpenVR, and the Oculus SDK.

Nsight Graphics is a suite of debugging and profiling tools for graphics applications. It provides insights into your application’s operation and optimal performance, and reduces your time spent debugging. Built from the same core features and codebase as Nsight Visual Studio Edition, Nsight Graphics adds several new capabilities, all in a standalone application.

Version 1.1 includes the following enhancements:
- Implemented support for Vulkan 1.1
- Increased support for ID3D12Device2
- Increased performance when debugging or profiling D3D11 applications
- Introduced new metrics in the Range Profiler including warp stall reasons and warp stall cycles
- Improved Range Profiler metric terminology for clarity
- Range Profiler now takes DXR workloads into account (requires 397.31 or later)
- Included several bug fixes and application compatibility fixes

- Nsight Graphics homepage
- Nsight Graphics documentation
- Nsight Graphics 1.1 blog post
- Nsight Graphics 1.1 DOWNLOAD

GeeXLab - english forum / Re: Kapla blocks game prototype with PhysX
« on: April 26, 2018, 08:18:13 PM »
New screenies:

GeeXLab - english forum / Re: (WIP) GL-Z 0.4.0
« on: April 26, 2018, 08:02:22 PM »
GLZ on a system with a RyZen 7 1700 CPU + Radeon RX Vega 56

GeeXLab - english forum / Re: (WIP) GL-Z 0.4.0
« on: April 26, 2018, 06:46:16 PM »
New screenshot.  Time to port it to other platforms (linux, macos, rpi and tinker board)...
Don't look at the FPS value in the title bar, GL-Z is in monitoring mode and on Windows, the frame is updated every second. When monitoring mode is disabled, the frame is updated at 60FPS.


Windows 10 x64 driver:
Linux x64 driver:

April 25th, 2018 - Windows 397.40, Linux 396.18.05

- Windows driver feature parity with Linux 396.18.02
- Bug fixes

Intel Metrics Discovery Application Programming Interface is a user mode library that provides access to GPU performance data. The library has OS abstraction layer that allows for interoperability in different environments.

Supported processors: Intel processors with Gen9 graphics devices:
- formerly Skylake (SKL),
- formerly Kabylake (KBL),
- formerly Apollo Lake/Broxton (APL/BXT).


GeeXLab - english forum / (WIP) GL-Z 0.4.0
« on: April 25, 2018, 02:57:58 PM »
The return of GL-Z...

3D-Tech News Around The Web / Vulkan Capability Viewer 1.6 released
« on: April 25, 2018, 11:38:08 AM »
Vulkan Hardware Capability Viewer is an application to display hardware implementation details for GPUs supporting the Vulkan API.

1.6 - 2018-04-24
- Support for new extensions:
- Added YCBCR formats

- DOWNLOAD win64
- Other downloads

GeeXLab - english forum / Re: Luajit for Linux
« on: April 24, 2018, 08:56:30 PM »

Samsung Electronics Sets New Performance Standards for NVMe SSDs with 970 PRO and EVO

New 970 series enables high-performance computing through enhanced speed, exceptional endurance and system design flexibility

RIDGEFIELD PARK, N.J.  – April 24, 2018 – Samsung Electronics America, Inc., today introduced the Samsung 970 PRO and EVO, the third generation of its industry-leading consumer solid state drive (SSD) lineup. Having led the market with the first consumer-focused NVMe SSD in 2015, Samsung continues to push the performance barriers with this latest generation of SSDs that are built for tech enthusiasts and professionals so that they can enjoy higher bandwidth for intensive workloads on PCs and workstations.

“Samsung has led the NVMe SSD industry since its inception, and the company continues to define the latest standards of consumer storage with unprecedented performance of the 970 PRO and EVO SSDs,” said Un-Soo Kim, senior vice president of Brand Product Marketing, Memory Business at Samsung Electronics. “The 970 series sets a new bar in all aspects for the NVMe SSD market with groundbreaking performance, superior reliability and best-in-class capacity.”

The Samsung 970 PRO and EVO are designed based on the M.2 form factor standard and with the latest PCIe Gen 3×4 lane interface.The 970 series maximizes the potential of NVMe bandwidth, delivering unparalleled performance for processing large volumes of data, including 3D, 4K graphics work, high-end games and data analytics.

The 970 PRO enables sequential read speed of up to 3,500 MB/s and sequential write speed of up to 2,700 MB/s[1], while the EVO features sequential read speed of up to 3,500 MB/s and sequential write speed of up to 2,500 MB/s[2]. The sequential write speeds represent an enhancement of up to 30 percent over the previous generation[3], thanks to Samsung’s latest V-NAND technology and the newly designed Phoenix controller. The 970 EVO, in particular, utilizes the Intelligent TurboWrite technology, which uses a large buffer size of up to 78GB[4]to enable faster write speeds.

In addition to the advancements in performance levels, the 970 PRO and EVO deliver exceptional endurance and reliability. Featuring a five-year warranty[5], or up to 1,200 terabytes written[6]– 50 percent higher than those provided for the previous generation[7]– the 970 PRO and EVO are built to last. The Dynamic Thermal Guard technology safeguards against overheating by automatically monitoring and maintaining optimal operating temperatures, while a heat spreader and new nickel-coated controller further lower the SSD temperatures.

The 970 PRO and EVO also provide greater system design flexibility for the high-performance computing systems. Offering a variety of high capacity options in a compact M.2 form factor – including the single-sided 2TB EVO model – the 970 series enables convenient storage expansion across a wide range of computing devices.

The 970 EVO will be offered in 250GB, 500GB, 1TB and 2TB[8]capacities, and the 970 PRO in 512GB and 1TB capacities. The 970 PRO and EVO will be available for purchase worldwide starting May 7, 2018, with manufacturer’s suggested retail prices starting at $329.99 and $119.99USD, respectively. For more information, including warranty details, please visit,


3D-Tech News Around The Web / Sandcat browser 6.0 (Chromium + Lua)
« on: April 24, 2018, 03:04:58 PM »
Sandcat is a lightweight multi-tabbed web browser that combines the speed and power of Chromium and Lua. Sandcat comes with built-in live headers, an extensible user interface and command line console, resource viewer, and many other features that are useful for web developers and pen-testers and when you need to examine live web applications.

- Sandcat homepage
- Sandcat downloads
- Sandcat @ ghithub

GeeXLab - english forum / Heightmap Normal Computing
« on: April 24, 2018, 02:02:47 PM »
How to compute the normal vector of a heightmap y=f(x, z)?

The demo is available for OpenGL 3.2 capable graphics hardware. This demo can be easily converted to OpenGL 2.1 or OpenGL ES is necessary.

Pages: 1 [2] 3 4 ... 74