Comments (5)
I'm not using normal = normal * 2.0 - 1.0
specifically because I'm using Rgba8UnormSrgb
. Doing it this way was suggested by the wgpu
guys. Apparently, according to them, Rgba8UnormSrgb
outputs colors in the range [-1.0, 1.0], perfect for normals. I'm not an expert on texture formats, but the results look correct to me.
from learn-wgpu.
You can see the difference here:
https://en.wikipedia.org/wiki/SRGB#/media/File:Cie_Chart_with_sRGB_gamut_by_spigget.png
You lose a lot of range of color by using SRGB. Not to mention it's outside of the typical use case of most engines/tools.
Another article about it:
https://medium.com/@bgolus/generating-perfect-normal-maps-for-unity-f929e673fc57#b86c
from learn-wgpu.
Rgba8Unorm
should still work with a texture2D
in shaders, though both Rgba8Unorm
and Rgba8UnormSrgb
return data as [0.0, 1.0]
when sampled as a float. Rgba8Snorm
would return values in the range [-1.0, 1.0]
, though I think to get the proper behavior you should have a Rgba8Unorm
texture with manual * 2 - 1
scaling.
from learn-wgpu.
The textures appear washed out when I use Rgba8Unorm
and * 2 - 1
scaling.
Sorry about the lack of communication on my part. I've been hunting down running wgpu on Android.
from learn-wgpu.
I would still use SRGB for the color texture as they are typically made in SRGB color space. When you generate normal maps they are generated in linear color space. It does mean when loading the textures in you have to determine whether it is a normal texture or a color texture. In my engine I use a ron file, but you could just as easily have something like: load_texture(path: Path, is_srgb: boolean)
from learn-wgpu.
Related Issues (20)
- tutorial 11 explanation of srgb HOT 2
- Modification for the textures beginner tutorial. HOT 1
- Wgpu without a window for web
- Switch to glam from cgmath.
- Incorrect parameter for creation of WGPU Instance HOT 2
- EventLoop::new() return a Result(...) and need unwrap() to use.
- Windowing chapter wonβt work on some platforms HOT 4
- Running tutorial11-normals panics on macOS Sonoma after fresh checkout HOT 1
- some setup is needed for proper dev eniorment of the exmple HOT 2
- Compiler error in State::new() HOT 5
- The source code in the Dependencies and window chapters is outdated. HOT 1
- Surface chapter code contains compilation errors! HOT 2
- Update the window creation section HOT 12
- Fix your tutorial HOT 4
- Vertex jittering when a object is far from the origin HOT 1
- Cannot follow tutorial as is
- new_inner_size: No such field HOT 3
- How to draw in a dedicated function HOT 2
- Tutorial10 was running fine yesterday, today it does not. HOT 2
- Missing field during State::New() in "The Surface"
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from learn-wgpu.