Current section

Files

Jump to
exray lib Exray Textures Image Generation.ex
Raw

lib/Exray/Textures/Image/Generation.ex

defmodule Exray.Textures.Image.Generation do
@moduledoc """
Image generation functions like creating gradients, noise maps, raw color
"""
alias Exray.Structs.Image
alias Exray.Structs.Color
@doc """
Generate image: plain color
"""
@spec gen_image_color(width :: integer, height :: integer, color :: Color.t()) ::
image :: Image.t()
defdelegate gen_image_color(width, height, color), to: Exray.Textures.Image.Generation.Loader
@doc """
Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient
"""
@spec gen_image_gradient_linear(
width :: integer,
height :: integer,
direction :: integer,
start :: Color.t(),
finish :: Color.t()
) :: image :: Image.t()
defdelegate gen_image_gradient_linear(width, height, direction, start, finish),
to: Exray.Textures.Image.Generation.Loader
@doc """
Generate image: radial gradient
"""
@spec gen_image_gradient_radial(
width :: integer,
height :: integer,
density :: float,
inner :: Color.t(),
outer :: Color.t()
) :: image :: Image.t()
defdelegate gen_image_gradient_radial(width, height, density, inner, outer),
to: Exray.Textures.Image.Generation.Loader
@doc """
Generate image: square gradient
"""
@spec gen_image_gradient_square(
width :: integer,
height :: integer,
density :: float,
inner :: Color.t(),
outer :: Color.t()
) :: image :: Image.t()
defdelegate gen_image_gradient_square(width, height, density, inner, outer),
to: Exray.Textures.Image.Generation.Loader
@doc """
Generate image: checked
"""
@spec gen_image_checked(
width :: integer,
height :: integer,
checks_x :: integer,
checks_y :: integer,
col1 :: Color.t(),
col2 :: Color.t()
) :: image :: Image.t()
defdelegate gen_image_checked(width, height, checks_x, checks_y, col1, col2),
to: Exray.Textures.Image.Generation.Loader
@doc """
Generate image: white noise
"""
@spec gen_image_white_noise(width :: integer, height :: integer, factor :: float) ::
image :: Image.t()
defdelegate gen_image_white_noise(width, height, factor),
to: Exray.Textures.Image.Generation.Loader
@doc """
Generate image: perlin noise
"""
@spec gen_image_perlin_noise(
width :: integer,
height :: integer,
offset_x :: integer,
offset_y :: integer,
scale :: float
) :: image :: Image.t()
defdelegate gen_image_perlin_noise(width, height, offset_x, offset_y, scale),
to: Exray.Textures.Image.Generation.Loader
@doc """
Generate image: cellular algorithm, bigger tileSize means bigger cells
"""
@spec gen_image_cellular(width :: integer, height :: integer, tile_size :: integer) ::
image :: Image.t()
defdelegate gen_image_cellular(width, height, tile_size),
to: Exray.Textures.Image.Generation.Loader
@doc """
Generate image: grayscale image from text data
"""
@spec gen_image_text(width :: integer, height :: integer, text :: binary) :: image :: Image.t()
defdelegate gen_image_text(width, height, text), to: Exray.Textures.Image.Generation.Loader
end