1
2//
3// This source file is part of appleseed.
4// Visit https://appleseedhq.net/ for additional information and resources.
5//
6// This software is released under the MIT license.
7//
8// Copyright (c) 2016-2018 The appleseedhq Organization
9//
10// Permission is hereby granted, free of charge, to any person obtaining a copy
11// of this software and associated documentation files (the "Software"), to deal
12// in the Software without restriction, including without limitation the rights
13// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14// copies of the Software, and to permit persons to whom the Software is
15// furnished to do so, subject to the following conditions:
16//
17// The above copyright notice and this permission notice shall be included in
18// all copies or substantial portions of the Software.
19//
20// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
26// THE SOFTWARE.
27//
28
29shader as_blender_areaLight
30[[
31    string as_node_name = "asAreaLight",
32    string as_category = "shader"
33]]
34(
35    color in_color = color(1)
36    [[
37        string label = "Color",
38        string page = "Emission",
39    ]],
40    float in_intensity = 1.0
41    [[
42        string label = "intensity",
43        string page = "Emission",
44    ]],
45    float in_intensity_scale = 1.0
46    [[
47        string label = "Intensity Scale",
48        string page = "Emission",
49    ]],
50    float in_exposure = 0.0
51    [[
52        string label = "Exposure",
53        string page = "Emission",
54    ]],
55    int in_normalize = 0
56    [[
57        string label = "Normalize",
58        string widget = "checkBox",
59        int as_blender_input_socket = 0,
60        string page = "Emission",
61    ]],
62    output closure color out_output = 0
63    [[
64        string label = "Output"
65    ]]
66)
67{
68    float power = in_intensity * in_intensity_scale * pow(2.0, in_exposure);
69
70    if (in_normalize)
71    {
72        power /= surfacearea();
73    }
74
75    out_output = power * in_color * emission();
76}
77