packages feed

roguestar-gl-0.4.0.0: src/Models/Materials.hs

module Models.Materials
    (
     -- | Materials by Faction
     treaty_metal,
     treaty_glow,
     treaty_energy_field,
     alliance_metal,
     concordance_metal,
     concordance_dark_glass,
     concordance_bright_glass,
     cyborg_metal,
     cyborg_glow,
     -- | Material by Species
     caduceator_skin,
     encephalon_skin,
     reptilian_skin,
     reptilian_pigment,
     reptilian_specular,
     -- | Material by Energy Type
     energyColor,
     energyMaterial)
    where

import RSAGL.Modeling
import Models.LibraryData

{---------------------------------------------------------
 - Materials by Faction
 - -------------------------------------------------------}

-- Treaty Organization Materials (cyan-teal solid colors, yellow energy colors)

treaty_metal :: MaterialM attr ()
treaty_metal = material $
    do pigment $ pure camouflage_green
       specular 1 $ pure $ viridian

treaty_glow :: MaterialM attr ()
treaty_glow = material $
    do pigment $ pure black
       emissive $ pure brass

treaty_energy_field :: MaterialM attr ()
treaty_energy_field = material $
    do emissive $ pure brass
       specular 1 $ pure saffron

-- Alliance Materials  (yellow-gold solid colors, orange energy colors)

alliance_metal :: Modeling ()
alliance_metal = material $
    do pigment $ pure $ scaleRGB 0.6 gold
       specular 7 $ pure gold

-- Concordance Materials  (violet solid colors, blue energy colors)

concordance_metal :: Modeling ()
concordance_metal = material $
    do pigment $ pure slate_gray
       specular 4 $ pure lilac

concordance_dark_glass :: Modeling ()
concordance_dark_glass = material $
    do pigment $ pure black
       specular 8 $ pure eggplant

concordance_bright_glass :: Modeling ()
concordance_bright_glass = material $
    do pigment $ pure black
       emissive $ pure puce
       specular 8 $ pure eggplant

-- Pirates  (green solid colors, red energy colors)

-- Utopiate (red solid colors, cyan-teal energy colors)

-- Whispers (black solid colors, white energy colors)

-- Monster (orange solid colors, violet energy colors)

-- Cyborg Materials  (white solid colors, green energy colors)

cyborg_metal :: MaterialM attr ()
cyborg_metal = metallic $ pure wheat

cyborg_glow :: MaterialM attr ()
cyborg_glow = 
    do pigment $ pure blackbody
       emissive $ pure $ scaleRGB 1.0 green

{-------------------------------------------------------
 - Materials by Species
 - -----------------------------------------------------}

-- Caduceator Skins

caduceator_skin :: Modeling ()
caduceator_skin = material $ pigment $ pattern (cloudy 75 0.01) [(0.0,pure red),(0.5,pure safety_orange),(1.0,pure black)]

-- Reptilian Skins

reptilian_pigment :: ColorFunction RGB
reptilian_pigment = pattern (cloudy 75 0.1) [(0.0,pure lavender),(1.0,pure saffron)]

reptilian_specular :: ColorFunction RGB
reptilian_specular = pattern (cloudy 75 0.1) [(0.0,pure firebrick),(1.0,pure chartreuse)]

reptilian_skin :: Modeling ()
reptilian_skin = material $
    do pigment $ reptilian_pigment
       specular 5.0 $ reptilian_specular

-- Encephalon Skins

encephalon_skin :: Modeling ()
encephalon_skin = material $ pigment $ pattern (cloudy 32 0.1) [(0.0,pure sepia),(1.0,pure amethyst)]

{--------------------------------------------------------
 - Material by Energy Type
 - ------------------------------------------------------}

energyColor :: EnergyColor -> RGB
energyColor Blue = cobalt
energyColor Yellow = saffron
energyColor Red = red
energyColor Green = shamrock

energyMaterial :: EnergyColor -> Modeling ()
energyMaterial c = material $
    do pigment $ pure $ scaleRGB 0.33 $ energyColor c
       specular 1.0 $ pure $ scaleRGB 0.33 $ energyColor c
       emissive $ pure $ scaleRGB 0.33 $ energyColor c