- Notifications
You must be signed in to change notification settings - Fork38
HDR, PFM, DDS, KTX, EXR, PNG, JPG, BMP image viewer and manipulator
License
kopaka1822/ImageViewer
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
An image viewer for anyone related to computer graphics.
- bmp, jpg, png, tga, gif
- hdr, pfm, exr (import only)
- dds, ktx, ktx2
- numpy (.npy files: integer and float formats)
System Requirements:
- x64 bit
- .Net 4.6.1
- DirextX 11 compatible graphics card
- Microsoft Visual C++ Redistributable for Visual Studio 2019
Download the latest release from theReleases page.
If you want to build and debug the Image Viewer, follow the instructionshere.
- quickside-by-side comparison
- arithmetic image manipulation (image calculator)
- image statistics (MSE, SSIM and more)
- layer, mipmap and360° views
- lat-long cubemap conversion
- mipmap generation (including box filter and lanczos)
- customisable filter in HLSL
- 3D (volumetric) textures
- computations are done in linear color space
The status bar displays the current texture coordinates (cursor) along with the corresponding RGBA color values in linear color space. The display type can be changed from linear color space to Srgb color space via: View->Pixel Display->Format.
Select a specific mipmap level and layer (face) of DDS and KTX textures and view cubemaps in projection or crossview:
View the raw polar image or look around in polar mode:
Convert between Lat-Long and Cubemaps withTools->LatLong to Cubemap
andTools->Cubemap to LatLong
. You can create a Cubemap or an arbitrary Texture2DArray from multiple images withFile->Import as Array
.
Compare up to 4 images side by side and use custom formulas to modify the displayed result. Additionally you can use the + and - Key to adjust the exposure.
I0 and I1 are the pixels from the first and the second image. sRGB values are in range [0,1] and you can combine them with following operators: * + - / ^. Numerical constants can be used as well. The detailed image equation guide can be foundhere.
Filter are HLSL compute shader that can be imported by the ImageViewer. Only a single function needs to be implemented that will be called for each pixel of the image. User defined parameters can be set from within the GUI. Some filter, like the gaussian blur, are already implemented and can be imported via the filter tab:
An example for a simple gamma correction filter would look like this:
// general information about the shader#setting title, Gamma Correction#setting description, Nonlinear operation used to encode and decode luminance.// define displayed name, variable name (for the shader), variable type, default value and optional minmum, maximum#param Gamma, gamma,float,1,0#param Factor, factor,float,1.0,0// this function will be called once for each pixelfloat4filter(int2 pixelCoord,int2 size){float4 color = src_image[pixelCoord];constfloat invGamma =1.0 / gamma;color.rgb =pow(abs(color.rgb * factor),float3(invGamma, invGamma, invGamma));return color;}
The detailed filter guide can be foundhere.
3D textures can be displayed as well and are supported by the majority of image viewer features (export, custom filtering, mipmap generation and more). Simple flat shading and transparency rendering is also supported to help visualize certain datasets.
Additionally, one can explore the insides of a 3D texture by using the "Slice" feature:
For more on 3D textures seehere.
About
HDR, PFM, DDS, KTX, EXR, PNG, JPG, BMP image viewer and manipulator