ShaderSkySource class Lighting and environment
Draws a custom sky from a fragment shader.
The fragmentShader runs full-screen behind the scene. The engine supplies
the world-space view direction as the v_ray vertex input and owns the
full-screen draw, depth, and draw order, so you place no geometry; the
shader writes linear HDR radiance with premultiplied alpha (exposure and
tone mapping are applied later). Bind custom uniform blocks and textures by
name with setUniformBlock / setTexture; set useEnvironment to have
the engine bind the scene environment's IBL textures (prefiltered_radiance
and brdf_lut) when the shader declares them.
Unlike EnvironmentSkySource, Skybox.intensity is not applied for you;
the shader controls its own output brightness.
- Inheritance
- Implementers
Constructors
- ShaderSkySource({Shader? fragmentShader, String? fragmentShaderName, Shader? radianceCubeFragmentShader, bool useEnvironment = false})
- Creates a sky source from a fragment shader.
Properties
- fragmentShader ↔ Shader
-
The full-screen sky fragment shader, typically loaded from a
.shaderbundle. When the source was constructed by name, the shader is resolved from the base library on first access and then cached.getter/setter pair - hashCode → int
-
The hash code for this object.
no setterinherited
- radianceCubeFragmentShader ↔ Shader?
-
The variant of fragmentShader built with
FLUTTER_SCENE_RADIANCE_CUBE, used when the active environment's radiance is a cubemap.getter/setter pair - runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- sampledEnvironment ↔ EnvironmentMap?
-
The environment a useEnvironment shader samples, overriding the
scene's.
getter/setter pair
-
textureNames
→ Iterable<
String> -
All currently-bound sampler names, in insertion order.
no setter
-
uniformBlockNames
→ Iterable<
String> -
All currently-bound uniform block names, in insertion order.
no setter
- useEnvironment ↔ bool
-
Whether the engine binds the active environment's IBL textures
(
prefiltered_radiance,brdf_lut) when the shader declares them.getter/setter pair
Methods
-
bind(
RenderPass pass, TransientWriter transientsBuffer, EnvironmentMap environment) → void - Binds the fragment's uniform blocks, textures, and (when useEnvironment) the environment IBL samplers. Called by the engine during the background draw; not part of the app-facing API.
-
getTexture(
String name) → Texture? -
Reads back a previously-set texture binding, or
nullwhen none is set. -
getUniformBlock(
String name) → ByteData? -
Reads back a previously-set uniform block, or
nullwhen none is set. -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
setTexture(
String name, Texture? texture, {SamplerOptions? sampler}) → void -
Assigns a texture to a sampler uniform by name. Pass
nullto clear it. -
setUniformBlock(
String name, ByteData? bytes) → void -
Assigns the byte contents of a uniform block by name.
bytesmust match the block's std140 layout; passnullto clear the binding. -
setUniformBlockFromFloats(
String name, List< double> floats) → void - Convenience wrapper around setUniformBlock that packs a list of floats. The caller is still responsible for std140 padding.
-
shaderForEnvironment(
EnvironmentMap environment) → Shader -
The shader to draw with against
environment, picking the variant whose radiance sampler matches the layout of the environment actually sampled (sampledEnvironment when set). The encoder builds the pipeline from this, and bind fills that pipeline's slots, so both must agree. -
toString(
) → String -
A string representation of this object.
inherited
-
usesRadianceCubeVariant(
EnvironmentMap environment) → bool - Whether shaderForEnvironment picks the cube variant, which is also what decides the radiance texture bound to it. False without a cube variant, so a sky built with only the 2D entry is never handed a cubemap.
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited