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