summaryrefslogtreecommitdiffstats
path: root/res/effectlib/funcareaLightVars.glsllib
diff options
context:
space:
mode:
Diffstat (limited to 'res/effectlib/funcareaLightVars.glsllib')
-rw-r--r--res/effectlib/funcareaLightVars.glsllib32
1 files changed, 32 insertions, 0 deletions
diff --git a/res/effectlib/funcareaLightVars.glsllib b/res/effectlib/funcareaLightVars.glsllib
new file mode 100644
index 0000000..7505b34
--- /dev/null
+++ b/res/effectlib/funcareaLightVars.glsllib
@@ -0,0 +1,32 @@
+#define MAX_AREA_LIGHTS 16
+
+// note this struct must exactly match the memory layout of the
+// struct SLightSourceShader in the source code. If you make changes here you need
+// to adjust the struct SLightSourceShader as well
+struct AreaLight
+{
+ vec4 position;
+ vec4 direction; // Specifies the light direction in world coordinates.
+ vec4 up;
+ vec4 right;
+ vec4 diffuse;
+ vec4 ambient;
+ vec4 specular;
+ float spotExponent; // Specifies the intensity distribution of the light.
+ float spotCutoff; // Specifies the maximum spread angle of the light.
+ float constantAttenuation; // Specifies the constant light attenuation factor.
+ float linearAttenuation; // Specifies the linear light attenuation factor.
+ float quadraticAttenuation; // Specifies the quadratic light attenuation factor.
+ float range; // Specifies the maximum distance of the light influence
+ float width; // Specifies the width of the area light surface.
+ float height; // Specifies the height of the area light surface;
+ vec4 shadowControls;
+ mat4 shadowView;
+ int shadowIdx;
+};
+
+layout (std140) uniform cbBufferAreaLights
+{
+ int uNumAreaLights;
+ AreaLight arealights[MAX_AREA_LIGHTS];
+};