Bug fixes for OpenSimplex2S Noise 2D (GLSL) and Value Cubic Noise 3D (GLSL and HLSL) #127
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Dear developers of FastNoiseLite Libruary.
I am working on custom plugin for Godot Game Engine that will allow usage of FastNoiseLite libruary on GPU device to provide noise data at runtime without visible delays and freezes.
I runned some tests in Godot and Shadertoy and found a few bugs in
_fnlSingleOpenSimplex2S2D
(In GLSL version only) and_fnlSingleValueCubic3D
(In GLSL and HLSL versions) functions.OpenSimplex2S Noise 2D (GLSL) before bug fix:
![image](https://private-user-images.githubusercontent.com/56871670/293800021-ad4e3477-bd93-40cd-ba1e-6ab9c57a2465.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NzI5NTksIm5iZiI6MTczOTY3MjY1OSwicGF0aCI6Ii81Njg3MTY3MC8yOTM4MDAwMjEtYWQ0ZTM0NzctYmQ5My00MGNkLWJhMWUtNmFiOWM1N2EyNDY1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE2VDAyMjQxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQzMmY3MjM0MGZjMTEzN2I4NTU2ZGYyMTNmYzg0NTU0YTljYTFmZTJmZTM0NWQxMDgwOGU1MzRhNThjNWFhNGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.uBxMMMHpW4GajsATwnUT1WXEIkLvOQvz2RiloBpcX7A)
After bug fix:
![image](https://private-user-images.githubusercontent.com/56871670/293800102-3d705d3b-99f7-4f22-8ee0-e652b159961f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NzI5NTksIm5iZiI6MTczOTY3MjY1OSwicGF0aCI6Ii81Njg3MTY3MC8yOTM4MDAxMDItM2Q3MDVkM2ItOTlmNy00ZjIyLThlZTAtZTY1MmIxNTk5NjFmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE2VDAyMjQxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThlYmUzZjVkYzIwNjNhNjg5ZjMwYmVjY2FjMTQ1OTYyNzBhMGExNjJhZGNmYjJjNDRkNzhjNjNlNjFlMDhkNWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Ki87KFv9c4RZloCN7RwO_46IZAplrGuXHnTfe5OPiIY)
Value Cubic Noise 3D (GLSL) before bug fix:
![image](https://private-user-images.githubusercontent.com/56871670/293799280-decc74ea-6e64-40f1-92f8-585d3b4cc958.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NzI5NTksIm5iZiI6MTczOTY3MjY1OSwicGF0aCI6Ii81Njg3MTY3MC8yOTM3OTkyODAtZGVjYzc0ZWEtNmU2NC00MGYxLTkyZjgtNTg1ZDNiNGNjOTU4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE2VDAyMjQxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIwYzhjZjQ5YmVmYmRjYzQxYjRmNWQyZTMzMTllZmI2ZjFmNDU2NDA3MmI1NzE1OWEwZGQ0MmRkMGM2Nzc3MjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.hqdWrw8FRsC7UZ-MOLD2FomB2vEQy9bL32ZH7iqj2ks)
After bug fix (equal to output of C++ and https://auburn.github.io/FastNoiseLite/ versions):
![image](https://private-user-images.githubusercontent.com/56871670/293799343-3c22154e-6582-4b67-a1da-93eb0f288019.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NzI5NTksIm5iZiI6MTczOTY3MjY1OSwicGF0aCI6Ii81Njg3MTY3MC8yOTM3OTkzNDMtM2MyMjE1NGUtNjU4Mi00YjY3LWExZGEtOTNlYjBmMjg4MDE5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE2VDAyMjQxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTcyN2Y1YTcxNzc0MGYzZGJiZTA3M2IyNjM1MDc2MjkyNDdjZDllYjQ2YWZlNzRmYWM3NTEwZjRhMjgyZjQzZjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.vcqLorLaRT18dnUjjAJOFgq_YHJFe3zFoJsp89hCKJg)
According to my current tests - other Noises (and functions) in GLSL are 99.9% equal to Noises created by C++ version of FastNoiseLite provided by Godot:
![image](https://private-user-images.githubusercontent.com/56871670/293797232-92143286-2b9e-4e3e-b6c5-f72e80da4276.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NzI5NTksIm5iZiI6MTczOTY3MjY1OSwicGF0aCI6Ii81Njg3MTY3MC8yOTM3OTcyMzItOTIxNDMyODYtMmI5ZS00ZTNlLWI2YzUtZjcyZTgwZGE0Mjc2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE2VDAyMjQxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTUyODVjODQ0NDc1ZDc1MGJmYzdmNzk0ZjYxMDk1Mjg5ZGI3ODE0YzJjNDAxZjQyOWRjZTIyYWM2YTBmZWFjNjYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.WJDNZ5jwPypOjTXdjk_bFgyETv-n-hSx8TqLArhAFYM)
If I found more bugs during plugin development I will try to inform you about them and seek for posible solutions...
Thank you for your attention and sorry for my bad English. Good luck in future development.
P.S. : Code I created for Shadertoy(https://www.shadertoy.com/) for testing and demonstration:
FastNoiseLite-ShadertoyTest.txt