-
-
Notifications
You must be signed in to change notification settings - Fork 21.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add SimplexNoise and NoiseTexture as new resources
SimplexNoise can be used to generate parameterized fractal noise based on Open Simplex. NoiseTexture uses SimplexNoise to generate noise textures for using in shaders/visual effects.
- Loading branch information
Showing
16 changed files
with
3,450 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/usr/bin/env python | ||
|
||
Import('env') | ||
env.add_source_files(env.modules_sources, ["register_types.cpp", "simplex_noise.cpp", "noise_texture.cpp", "#thirdparty/misc/open-simplex-noise.c"]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
def can_build(env, platform): | ||
return True | ||
|
||
def configure(env): | ||
pass | ||
|
||
def get_doc_classes(): | ||
return [ | ||
"NoiseTexture", | ||
"SimplexNoise" | ||
] | ||
|
||
def get_doc_path(): | ||
return "doc_classes" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
<?xml version="1.0" encoding="UTF-8" ?> | ||
<class name="NoiseTexture" inherits="Texture" category="Core" version="3.1"> | ||
<brief_description> | ||
[SimplexNoise] filled texture. | ||
</brief_description> | ||
<description> | ||
Uses a [SimplexNoise] to fill the texture data. You can specify the texture size but keep in mind that larger textures will take longer to generate and seamless noise only works with square sized textures. | ||
NoiseTexture can also generate normalmap textures. | ||
</description> | ||
<tutorials> | ||
</tutorials> | ||
<demos> | ||
</demos> | ||
<methods> | ||
<method name="set_height"> | ||
<return type="void"> | ||
</return> | ||
<argument index="0" name="height" type="int"> | ||
</argument> | ||
<description> | ||
Set texture height. | ||
</description> | ||
</method> | ||
<method name="set_width"> | ||
<return type="void"> | ||
</return> | ||
<argument index="0" name="width" type="int"> | ||
</argument> | ||
<description> | ||
Set texture width. | ||
</description> | ||
</method> | ||
</methods> | ||
<members> | ||
<member name="as_normalmap" type="bool" setter="set_as_normalmap" getter="is_normalmap"> | ||
If true, the resulting texture contains a normal map created from the original noise interpreted as a bump map. | ||
</member> | ||
<member name="noise" type="SimplexNoise" setter="set_noise" getter="get_noise"> | ||
The [SimplexNoise] instance used to generate the noise. | ||
</member> | ||
<member name="seamless" type="bool" setter="set_seamless" getter="get_seamless"> | ||
Whether the texture can be tiled without visible seams or not. Seamless textures take longer to generate. | ||
</member> | ||
<member name="size" type="Vector2" setter="set_size" getter="get_size"> | ||
Size of the generated texture. | ||
</member> | ||
</members> | ||
<constants> | ||
</constants> | ||
</class> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
<?xml version="1.0" encoding="UTF-8" ?> | ||
<class name="SimplexNoise" inherits="Resource" category="Core" version="3.1"> | ||
<brief_description> | ||
Noise generator based on Open Simplex. | ||
</brief_description> | ||
<description> | ||
This resource allows you to configure and sample a fractal noise space. | ||
|
||
Here is a brief usage example that configures a SimplexNoise and gets samples at various positions and dimensions: | ||
[codeblock] | ||
var noise = SimplexNoise.new() | ||
|
||
# Configure | ||
noise.seed = randi() | ||
noise.octaves = 4 | ||
noise.period = 20.0 | ||
noise.persistance = 0.8 | ||
|
||
#Sample | ||
print("Values:") | ||
print(noise.get_noise_2d(1.0,1.0)) | ||
print(noise.get_noise_3d(0.5,3.0,15.0)) | ||
print(noise.get_noise_3d(0.5,1.9,4.7,0.0)) | ||
[/codeblock] | ||
|
||
</description> | ||
<tutorials> | ||
</tutorials> | ||
<demos> | ||
</demos> | ||
<methods> | ||
<method name="get_image"> | ||
<return type="Image"> | ||
</return> | ||
<argument index="0" name="width" type="int"> | ||
</argument> | ||
<argument index="1" name="height" type="int"> | ||
</argument> | ||
<description> | ||
Generate a noise image with the requested [code]width[/code] and [code]height[/code], based on the current noise parameters. | ||
</description> | ||
</method> | ||
<method name="get_noise_2d"> | ||
<return type="float"> | ||
</return> | ||
<argument index="0" name="x" type="float"> | ||
</argument> | ||
<argument index="1" name="y" type="float"> | ||
</argument> | ||
<description> | ||
2D noise value [-1,1] at position [code]x[/code],[code]y[/code]. | ||
</description> | ||
</method> | ||
<method name="get_noise_2dv"> | ||
<return type="float"> | ||
</return> | ||
<argument index="0" name="pos" type="Vector2"> | ||
</argument> | ||
<description> | ||
2D noise value [-1,1] at position [code]pos.x[/code],[code]pos.y[/code]. | ||
</description> | ||
</method> | ||
<method name="get_noise_3d"> | ||
<return type="float"> | ||
</return> | ||
<argument index="0" name="x" type="float"> | ||
</argument> | ||
<argument index="1" name="y" type="float"> | ||
</argument> | ||
<argument index="2" name="z" type="float"> | ||
</argument> | ||
<description> | ||
3D noise value [-1,1] at position [code]x[/code],[code]y[/code],[code]z[/code]. | ||
</description> | ||
</method> | ||
<method name="get_noise_3dv"> | ||
<return type="float"> | ||
</return> | ||
<argument index="0" name="pos" type="Vector3"> | ||
</argument> | ||
<description> | ||
3D noise value [-1,1] at position [code]pos.x[/code],[code]pos.y[/code],[code]pos.z[/code]. | ||
</description> | ||
</method> | ||
<method name="get_noise_4d"> | ||
<return type="float"> | ||
</return> | ||
<argument index="0" name="x" type="float"> | ||
</argument> | ||
<argument index="1" name="y" type="float"> | ||
</argument> | ||
<argument index="2" name="z" type="float"> | ||
</argument> | ||
<argument index="3" name="w" type="float"> | ||
</argument> | ||
<description> | ||
4D noise value [-1,1] at position [code]x[/code],[code]y[/code],[code]z[/code],[code]w[/code]. | ||
</description> | ||
</method> | ||
<method name="get_seamless_image"> | ||
<return type="Image"> | ||
</return> | ||
<argument index="0" name="size" type="int"> | ||
</argument> | ||
<description> | ||
Generate a tileable noise image, based on the current noise parameters. | ||
Generated seamless images are always square ([code]size[/code]x[code]size[/code]). | ||
</description> | ||
</method> | ||
</methods> | ||
<members> | ||
<member name="lacunarity" type="float" setter="set_lacunarity" getter="get_lacunarity"> | ||
Difference in period between [member octaves]. | ||
</member> | ||
<member name="octaves" type="int" setter="set_octaves" getter="get_octaves"> | ||
Number of Simplex Noise layers that are sampled to get the fractal noise. | ||
</member> | ||
<member name="period" type="float" setter="set_period" getter="get_period"> | ||
Period of the base octave. | ||
A lower period results in a higher frequancy noise (more value changes across the same distance). | ||
</member> | ||
<member name="persistance" type="float" setter="set_persistance" getter="get_persistance"> | ||
Contribuiton factor of the different octaves. | ||
A [code]persistance[/code] value of 1 means all the octaves have the same contribution, a value of 0.5 means each octave contributes half as much as the previous one. | ||
</member> | ||
<member name="seed" type="int" setter="set_seed" getter="get_seed"> | ||
Seed used to generate random values, different seeds will generate different noise maps. | ||
</member> | ||
</members> | ||
<constants> | ||
</constants> | ||
</class> |
Oops, something went wrong.