BEER development update #3

Malt Weekly Report (July 3)

  • Support for Pipeline Parameters. Pipeline Parameters are per type (Scene, World, Light, Camera, Object) custom properties declared from the Malt Pipeline and exposed in the host (Blender) UI.
  • Support for Uniform Buffer Objects and Uniform Blocks reflection.
  • Initial Lighting support (Sun, Point and Spot lights). No shadow maps yet.

— Miguel Pozo

Lit shader example:

https://pastebin.com/hYtB8vn9

uniform vec3 color_value = vec3(1.0,0.1,0.1);
//uniform sampler2D color_texture;

MAIN_PASS
{
    //vec4 albedo = texture(color_texture, uv[0]) * vec4(color_value, 1);
    vec4 albedo = vec4(color_value, 1);

    for (int i = 0; i < scene_lights.sun_lights_count; i++)
    {
        SunLight sun_light = scene_lights.sun_lights[i];
        COLOR += (albedo * vec4(sun_light.color,1)) * max(0, dot(-sun_light.direction, normal));
    }
    for (int i = 0; i < scene_lights.point_lights_count; i++)
    {
        PointLight point = scene_lights.point_lights[i];
        float normalized_distance = distance(position, point.position) / point.radius;
        normalized_distance = clamp(normalized_distance, 0, 1);
        float d = dot(normalize(point.position - position), normal);
        d = clamp(d,0,1);
        COLOR += (albedo * vec4(point.color,1)) * (1.0 - normalized_distance) * d;
    }
    for (int i = 0; i < scene_lights.spot_lights_count; i++)
    {
        SpotLight spot = scene_lights.spot_lights[i];
        float spot_angle = dot(spot.direction, normalize(position - spot.position));
        spot.angle /= 2.0;
        spot_angle = acos(spot_angle);
        float normalized_distance = distance(position, spot.position) / spot.radius;
        normalized_distance = clamp(normalized_distance, 0, 1);
        float d = dot(-spot.direction, normal);
        d = clamp(d,0,1);
        if(spot_angle < spot.angle)
        {
            COLOR += (albedo * vec4(spot.color,1)) * (1.0 - normalized_distance) * d;
        }
    }
}

The repository | Update brief | Project Page | Donate to the Development