A simple program that converts images into normal maps

Overview

Advertisement

If you are a Blender user, this addon I created might be interesting for you:

Node Preview Addon

NormalmapGenerator

This is a program to generate normal-, spec- and displacementmaps from image textures in one go. It supports stack processing and a few other nice features, but has some rough edges and is still in development.

Download

See the releases section. Usually there are Windows (32 bit) and Linux (64 bit) binaries available on each release.

Screenshot

screenshot

Features

  • Fully multithreaded with OpenMP, will use all available CPU cores
  • Keep Large Detail (see below for details)
  • Fast and easy way to create normal, spec and displacementmaps

Keep Large Detail

One of the things I hate about classic normalmap generators is how they handle large image textures: usually the normalmap is unusable due to fine detail and the whole information about "large detail" (the overall curvature) is lost.

This is a large texture generated the classic way: kld_disabled

When used in a rendering, it will look like this: kld_disabled_render

What the feature I called "Keep Large Detail" does is that it blends a downscaled version of the image over the original image, thus retaining the overall curvature information while still showing fine detail: kld_enabled

Rendered, it looks much better: kld_enabled_render

Comments
  • crash on Ubuntu 14.04

    crash on Ubuntu 14.04

    (v0.3.2) On Ubuntu 14.04, as soon as I click on a tab, it's an instant crash with the following error message in the terminal :

    ./NormalmapGenerator: symbol lookup error: ./NormalmapGenerator: undefined symbol: _ZN7QString13toUtf8_helperERKS_
    
    opened by drBouvierLeduc 5
  • Platform independent support (e.g., macOS)

    Platform independent support (e.g., macOS)

    As a Mac user, platform independent support would be extremely helpful!

    There is platform independent windowing and graphics API support available such as GLFW and SDL.

    opened by IntellectualKitty 3
  • Normal map is

    Normal map is "shifted"

    Hello Thanks for this great project. I've noticed something weird: the normal map is kind of 'shifted' (few pixels) compared to the real texture. When light is moving over it, the texture looks like distorted because of that.

    opened by mkdotcom 3
  • compilation error

    compilation error

    Hi i tried building on manjaro (arch) linux but got errors. I did qmake NormalmapGenerator.pro; make; wit this errors:

    src_viewer/camera.cpp: In constructor ‘Camera::Camera()’: src_viewer/camera.cpp:5:14: error: ‘M_PI’ was not declared in this scope xAngle = M_PI / 4.0; ^~~~ src_viewer/camera.cpp: In member function ‘void Camera::rotateY(float)’: src_viewer/camera.cpp:19:27: error: ‘fabs’ was not declared in this scope if(fabs(yAngle + angle) < M_PI / 2.0) ^ src_viewer/camera.cpp:19:31: error: ‘M_PI’ was not declared in this scope if(fabs(yAngle + angle) < M_PI / 2.0) ^~~~ src_viewer/camera.cpp: In member function ‘const QMatrix4x4& Camera::toMatrix()’: src_viewer/camera.cpp:42:49: error: ‘sin’ was not declared in this scope position = QVector3D(radius * sin(xAngle) * cos(yAngle), ^ src_viewer/camera.cpp:42:63: error: ‘cos’ was not declared in this scope position = QVector3D(radius * sin(xAngle) * cos(yAngle), ^ make: *** [Makefile:632: camera.o] Error 1

    opened by florianfelix 2
  • small image + normal map size 10% -> crash

    small image + normal map size 10% -> crash

    very small white image: 4525

    Load the attached image, then set 10% in the "normal map size" and the app will crash Same thing when doing a queue process with the same 10% parameter I guess there is a small issue when generated normal map is too small

    opened by mkdotcom 2
  • Unnecessary computations

    Unnecessary computations

    When dropping an image into the preview window, the map for the current window type is computed, then the view switches to the "input image" tab, and when the user goes back to the map that was already computed, it is computed again.

    enhancement 
    opened by Theverat 0
  • Looks Promising - But Unbake Diffuse/Albedo Please

    Looks Promising - But Unbake Diffuse/Albedo Please

    Hi,

    So far NormalmapGenerator looks promising, but to prevent fighting, it would be helpful to be able to save a diffuse color map. Thank you for your consideration and effort. : )

    opened by BrendaEM 0
  • QCoreApplication::UnicodeUTF8 is deprecated

    QCoreApplication::UnicodeUTF8 is deprecated

    This enum type used to define the 8-bit encoding of character string arguments to translate(). This enum is now obsolete and UTF-8 will be used in all cases. So remove all instances of QCoreApplication::UnicodeUTF8

    opened by ms502040 0
  • Doubt about average calculation in SpecularMap

    Doubt about average calculation in SpecularMap

    Hi, I was looking at the code, and i saw that in specular map, the average calculation was like this:

       double multiplierSum = (redMultiplier + greenMultiplier + blueMultiplier  + alphaMultiplier );
        if(multiplierSum == 0.0)
            multiplierSum = 1.0;
    //some other code
        if(mode == IntensityMap::AVERAGE) {
           //take the average out of all selected channels
            intensity = (r + g + b + a) / multiplierSum;
        }
    

    But imho this is not an average, because if every channel has a multiplier of let say 0.1, then the sum is going to be 0.4, and you are going to divide the whole sum by 0.4. Shouldn't the division be the sum of each channel divided by the ammount of channels used? I really don't know how specular maps are calculated, so it's just a question.. i can fix it if it is a bug.

    opened by azagaya 6
  • Faile to compile in linux, fabs not defined.

    Faile to compile in linux, fabs not defined.

    Hi, i've just tried to compile in linux and failed, with error "fabs not defined" in file ssaogenerator.cpp. I included cmath in that very same file and works fine. I've seen this in previous issues, is there a reazon why this fix is not included in master?

    opened by azagaya 3
Releases(v0.4.5_beta)
Owner
Simon Wendsche
aka B.Y.O.B.
Simon Wendsche
A sample app that demonstrates several techniques for rendering real-time shadow maps

Shadows This is a D3D11 sample app that demonstrates several techniques for rendering real-time shadow maps. The following techniques are implemented:

MJP 575 Nov 30, 2022
Simple OpenGL program to visualize point cloud.

Point Cloud Viewer Simple OpenGL program to visualize point cloud. The input data files should be plain text files. screenshot on Linux: screenshot on

Tang.Anke 3 May 31, 2022
The official Open-Asset-Importer-Library Repository. Loads 40+ 3D-file-formats into one unified and clean data structure.

Open Asset Import Library (assimp) A library to import and export various 3d-model-formats including scene-post-processing to generate missing render

Open Asset Import Library 8.5k Dec 4, 2022
Flutter package that lets you simply animate a widget into a visible state.

Entry This Flutter package introduces a new widget : Entry. It lets you simply animate a widget into a visible state. Don't just display widgets : mak

Mickaël Hernandez 25 Aug 14, 2022
The DirectX Shader Compiler project includes a compiler and related tools used to compile High-Level Shader Language (HLSL) programs into DirectX Intermediate Language (DXIL) representation

DirectX Shader Compiler The DirectX Shader Compiler project includes a compiler and related tools used to compile High-Level Shader Language (HLSL) pr

Microsoft 2.4k Dec 2, 2022
vkfetch is a fetch-program that displays basic information about your vulkan-compatible graphic card(s)!

vkfetch vkfetch is a fetch-program that displays basic information about your vulkan-compatible graphic card(s)! vkfetch will also display some vendor

Wunk 19 Oct 27, 2022
Paint program for Unix. Inspired by MS Paint (Windows 95-98).

Classic Colors Classic Colors is a simple and efficient paint program for Unix systems, inspired by MS Paint (Windows 95-98 version). It is built on t

Justin Meiners 24 Oct 18, 2022
This is a openGL cube demo program. It was made as a tech demo using PVR_PSP2 Driver layer GPU libraries.

OpenGL Cube Demo using PVR_PSP2 Driver layer GPU libraries This is a openGL cube demo program. It was made as a tech demo using PVR_PSP2 Driver layer

David Cantu 5 Oct 31, 2021
OpenGL®-Starter is a template for your upcoming OpenGL Projects which has been compiled to run the most basic Hello World OpenGL Program from LearnOpenGL.com.

OpenGL®-Starter OpenGL®-Starter is a template for your upcoming OpenGL Projects which has been compiled to run the most basic Hello World OpenGL Progr

Kushagra 9 Sep 7, 2022
The pickME3D is a client program of an online furniture store.

The pickME3D is a client program of an online furniture store. This program can help customers to find proper furniture for their room. Virtual furniture store clients, construct 3D space from a photo of the room and can help customers to find proper furniture for their room. OpenGL-based rendering supports 3DS file format.

PROCW 4 Oct 13, 2022
FDF is a 42 Project to learn about 3d programming. The program takes a map as parameter and creates its 3d representation.

FDF Project Overview FDF is a 42 Project to learn about 3d programming. The program takes a map as parameter and creates its 3d representation. Render

Mmoumni08 7 Dec 1, 2022
A small dx11 base program I use to test shaders and techniques

Dx11Base A small DirectX 11 program I use to test shaders and techniques (windows only). It is meant to be simple and straightforward. Nothing fancy t

SebH 83 Jul 6, 2022
A simple animation challenge made with Flutter

Slide Show - Flutter Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this is your fi

Pedro Massango 24 Dec 2, 2021
A C++ commandline for use in servers and chat software. Provides very simple asynchronous input/output.

commandline A C++ commandline for use in servers and terminal chat software. Provides very simple asynchronous input/output. Supports reading and writ

Lion 71 Oct 9, 2022
Simple and efficient screen recording utility for Windows.

simple and efficient screen recording utility for Windows

Mārtiņš Možeiko 478 Nov 28, 2022
A simple single point light shadow mapping with OpenGL 3.3 and C++

omni-directional-light-example Using OpenGL 3.3 with C++ Basically a single light map, no lighting model was used Usage Build the executable outside A

Mohammad Issawi 4 Feb 10, 2022
A simple mirror simulator made with OpenGL 3.3 and C++

Mirror-Example A simple mirror example using OpenGL 3.3 with C++. Theory It basically constructs a camera at the mirror location, by determining its v

Mohammad Issawi 4 Feb 10, 2022
Voxelight is a simple voxel engine/sandbox

Voxelight is a learning project, I have no prior experience with OpenGL or any other graphics API for that matter.

null 0 Jul 14, 2022
simple fdtd using vulkan, omp or single thread

fdtd simple fdtd using vulkan, omp or single thread example how to build first clone the repo with: git clone https://github.com/nikisalli/fdtd.git up

Nik 5 Nov 12, 2022