/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
 *
 * SPDX-License-Identifier: Apache-2.0 */

#include "stdcycles.h"

shader node_ambient_occlusion(color ColorIn = color(1.0, 1.0, 1.0),
                              int samples = 16,
                              float Distance = 1.0,
                              normal Normal = N,
                              int inside = 0,
                              int only_local = 0,
                              output color ColorOut = color(1.0, 1.0, 1.0),
                              output float AO = 1.0)
{
  int global_radius = (Distance == 0.0 && !isconnected(Distance));

  /* Abuse texture call with special @ao token. */
  AO = texture("@ao",
               samples,
               Distance,
               Normal[0],
               Normal[1],
               Normal[2],
               inside,
               "sblur",
               only_local,
               "tblur",
               global_radius);
  ColorOut = ColorIn * AO;
}
