NoiseTexture3D
Procedural volume texture with queued generation and a shared Noise resource.
Set small Width/Height/Depth and Noise and subscribe before waiting for Changed. Generation is deferred and then usually uses a worker; setters can coalesce, and an intermediate result can be published before regeneration. Dimensions are requested metadata, not proof of an uploaded volume.
Unlike NoiseTexture2D, GetData reads through RenderingServer rather than exposing a retained CPU array. Use Noise.GetImage3D for CPU slices. Changed also occurs without Noise; format/old GPU resources can remain on an empty result. Manage your generation lifecycle; one Changed or RID does not establish freshness or success.
ColorRamp produces RGBA8; otherwise the noise-image format is used. This implementation has no mipmaps. Budget memory for the entire volume and temporary data. The Seamless/Depth=1 limitation propagates from the Noise CPU generator and was not accepted through the GPU.
Queues, notifications, shared resources, valid settings and format metadata were tested. Volume pixels, GPU readback/display, visual seams, HDR, memory limits and concurrent mutations were not accepted.
Declarations checked against C# SDK 1.0.0. Expand a name to see declarations and documentation.
Constructors1
NoiseTexture3DConstructor
public NoiseTexture3D();Creates a volume texture with Width/Height/Depth=64, Normalize=true and no Noise. Set small dimensions and a generator before waiting for Changed. It exposes no retained ready CPU array: GetData uses RenderingServer and needs separate readback validation. Dispose the owned resource after use.
Properties9
ColorRampProperty
public Gradient ColorRamp { get; set; }Shared Gradient ramp: noise Image luminance supplies its Sample position. Ramp Changed triggers regeneration. Output becomes RGBA8, losing HDR values and float precision. Applied after invert/normalize rather than changing noise itself. Resulting alpha does not make NoiseTexture2D.HasAlpha return true.
DepthProperty
public int Depth { get; set; }Requested positive Z-layer count, default 64. In 1.0.0 Seamless with Depth=1 inherits an extra skirt layer from Noise: do not use that case without checking actual data. This edge case was not accepted through the GPU. Consider NoiseTexture2D.In3DSpace for a single slice.
HeightProperty
public int Height { get; set; }Requested positive volume height, default 64. Metadata can lead uploaded resource data; Changed is not validation of every pixel.
InvertProperty
public bool Invert { get; set; }Inverts source-image brightness before ColorRamp and normal-map processing. Changes no seed and does not mean inversion of final RGB. Changes queue regeneration.
NoiseProperty
public Noise Noise { get; set; }Shared Noise generator reference, such as FastNoiseLite. Setter subscribes to its Changed and queues regeneration; output is not immediately ready. Editing one shared generator regenerates all subscribed textures. null can still produce Changed without new data; the previous GPU resource is not guaranteed to clear. Do not dispose a borrowed getter wrapper or mutate the generator from another thread while sampling.
NormalizeProperty
public bool Normalize { get; set; }Enables min/max normalization during noise image/volume generation, default true. Changes data mapping rather than display alone. Separately normalized chunks can have different contrast; a constant field becomes zero brightness before invert. Changes require queued generation.
SeamlessProperty
public bool Seamless { get; set; }Selects blending of an expanded noise field for repetition. Does not guarantee continuity between arbitrary terrain chunks or enable material Repeat. Extra work/memory depends on SeamlessBlendSkirt; visual seam quality was not accepted here.
SeamlessBlendSkirtProperty
public float SeamlessBlendSkirt { get; set; }Extra-field fraction with Seamless, default 0.1. Unlike 2D, the 3D setter accepts only 0.05..1. Adds samples/memory rather than guaranteeing smoothness. Start with the default; extreme values were not accepted.
WidthProperty
public int Width { get; set; }Requested positive volume width, default 64. Changes immediately, independently of background completion. Account for Width×Height×Depth and temporary buffers; positive dimensions do not guarantee GPU-memory availability.
Methods15
GetColorRampGradient
public Gradient GetColorRamp();Reads the ColorRamp setting, not task completion. Shared Gradient ramp: noise Image luminance supplies its Sample position. Ramp Changed triggers regeneration. Output becomes RGBA8, losing HDR values and float precision. Applied after invert/normalize rather than changing noise itself. Resulting alpha does not make NoiseTexture2D.HasAlpha return true.
GradientShared assigned resource or null; do not dispose a borrowed wrapper.
GetInvertbool
public bool GetInvert();Reads the Invert setting, not task completion. Inverts source-image brightness before ColorRamp and normal-map processing. Changes no seed and does not mean inversion of final RGB. Changes queue regeneration.
boolStored setting, not a guarantee of ready pixels/GPU data.
GetNoiseNoise
public Noise GetNoise();Reads the Noise setting, not task completion. Shared Noise generator reference, such as FastNoiseLite. Setter subscribes to its Changed and queues regeneration; output is not immediately ready. Editing one shared generator regenerates all subscribed textures. null can still produce Changed without new data; the previous GPU resource is not guaranteed to clear. Do not dispose a borrowed getter wrapper or mutate the generator from another thread while sampling.
NoiseShared assigned resource or null; do not dispose a borrowed wrapper.
GetSeamlessbool
public bool GetSeamless();Reads the Seamless setting, not task completion. Selects blending of an expanded noise field for repetition. Does not guarantee continuity between arbitrary terrain chunks or enable material Repeat. Extra work/memory depends on SeamlessBlendSkirt; visual seam quality was not accepted here.
boolStored setting, not a guarantee of ready pixels/GPU data.
GetSeamlessBlendSkirtfloat
public float GetSeamlessBlendSkirt();Reads the SeamlessBlendSkirt setting, not task completion. Extra-field fraction with Seamless, default 0.1. Unlike 2D, the 3D setter accepts only 0.05..1. Adds samples/memory rather than guaranteeing smoothness. Start with the default; extreme values were not accepted.
floatStored setting, not a guarantee of ready pixels/GPU data.
IsNormalizedbool
public bool IsNormalized();Reads the Normalize setting, not task completion. Enables min/max normalization during noise image/volume generation, default true. Changes data mapping rather than display alone. Separately normalized chunks can have different contrast; a constant field becomes zero brightness before invert. Changes require queued generation.
boolStored setting, not a guarantee of ready pixels/GPU data.
SetColorRampvoid
public void SetColorRamp(Gradient gradient);Sets ColorRamp under the regeneration-queue rules. Shared Gradient ramp: noise Image luminance supplies its Sample position. Ramp Changed triggers regeneration. Output becomes RGBA8, losing HDR values and float precision. Applied after invert/normalize rather than changing noise itself. Resulting alpha does not make NoiseTexture2D.HasAlpha return true.
| Name | Type | Default |
|---|---|---|
gradient | Gradient | — |
gradientShared resource reference; Changed is observed and no copy is made.
SetDepthvoid
public void SetDepth(int depth);Sets Depth under the regeneration-queue rules. Requested positive Z-layer count, default 64. In 1.0.0 Seamless with Depth=1 inherits an extra skirt layer from Noise: do not use that case without checking actual data. This edge case was not accepted through the GPU. Consider NoiseTexture2D.In3DSpace for a single slice.
| Name | Type | Default |
|---|---|---|
depth | int | — |
depthPositive requested dimension; bound memory and await data generation.
SetHeightvoid
public void SetHeight(int height);Sets Height under the regeneration-queue rules. Requested positive volume height, default 64. Metadata can lead uploaded resource data; Changed is not validation of every pixel.
| Name | Type | Default |
|---|---|---|
height | int | — |
heightPositive requested dimension; bound memory and await data generation.
SetInvertvoid
public void SetInvert(bool invert);Sets Invert under the regeneration-queue rules. Inverts source-image brightness before ColorRamp and normal-map processing. Changes no seed and does not mean inversion of final RGB. Changes queue regeneration.
| Name | Type | Default |
|---|---|---|
invert | bool | — |
invertNew Invert value; see the description for valid range and scope.
SetNoisevoid
public void SetNoise(Noise noise);Sets Noise under the regeneration-queue rules. Shared Noise generator reference, such as FastNoiseLite. Setter subscribes to its Changed and queues regeneration; output is not immediately ready. Editing one shared generator regenerates all subscribed textures. null can still produce Changed without new data; the previous GPU resource is not guaranteed to clear. Do not dispose a borrowed getter wrapper or mutate the generator from another thread while sampling.
| Name | Type | Default |
|---|---|---|
noise | Noise | — |
noiseShared resource reference; Changed is observed and no copy is made.
SetNormalizevoid
public void SetNormalize(bool normalize);Sets Normalize under the regeneration-queue rules. Enables min/max normalization during noise image/volume generation, default true. Changes data mapping rather than display alone. Separately normalized chunks can have different contrast; a constant field becomes zero brightness before invert. Changes require queued generation.
| Name | Type | Default |
|---|---|---|
normalize | bool | — |
normalizeNew Normalize value; see the description for valid range and scope.
SetSeamlessvoid
public void SetSeamless(bool seamless);Sets Seamless under the regeneration-queue rules. Selects blending of an expanded noise field for repetition. Does not guarantee continuity between arbitrary terrain chunks or enable material Repeat. Extra work/memory depends on SeamlessBlendSkirt; visual seam quality was not accepted here.
| Name | Type | Default |
|---|---|---|
seamless | bool | — |
seamlessNew Seamless value; see the description for valid range and scope.
SetSeamlessBlendSkirtvoid
public void SetSeamlessBlendSkirt(float seamlessBlendSkirt);Sets SeamlessBlendSkirt under the regeneration-queue rules. Extra-field fraction with Seamless, default 0.1. Unlike 2D, the 3D setter accepts only 0.05..1. Adds samples/memory rather than guaranteeing smoothness. Start with the default; extreme values were not accepted.
| Name | Type | Default |
|---|---|---|
seamlessBlendSkirt | float | — |
seamlessBlendSkirtNew SeamlessBlendSkirt value; see the description for valid range and scope.
SetWidthvoid
public void SetWidth(int width);Sets Width under the regeneration-queue rules. Requested positive volume width, default 64. Changes immediately, independently of background completion. Account for Width×Height×Depth and temporary buffers; positive dimensions do not guarantee GPU-memory availability.
| Name | Type | Default |
|---|---|---|
width | int | — |
widthPositive requested dimension; bound memory and await data generation.