2
#light spotlight( float intensity = 1;
3
# color lightcolor = 1;
4
# point from = point "shader" (0,0,0);
5
# point to = point "shader" (0,0,1);
6
# float coneangle = radians(30);
7
# float conedeltaangle = radians(5);
8
# float beamdistribution = 2;)
10
# uniform vector A = normalize(to - from);
11
# uniform float cosoutside = cos(coneangle);
12
# uniform float cosinside = cos(coneangle - conedeltaangle);
13
# illuminate (from, A, coneangle) {
14
# float cosangle = (L . A) / length(L);
15
# float atten = pow (cosangle, beamdistribution) / (L . L);
16
# atten *= smoothstep (cosoutside, cosinside, cosangle);
17
# Cl = atten * intensity * lightcolor;
21
param uniform float intensity 1
22
param uniform color lightcolor 1 1 1
23
param uniform point from 0 0 0
24
param uniform point to 0 0 1
25
param uniform float coneangle 30
26
param uniform float conedeltaangle 5
27
param uniform float beamdistribution 2
29
temp uniform float cosoutside
30
temp uniform float cosinside
35
const string $3 "shader"
40
radians coneangle coneangle
41
radians conedeltaangle conedeltaangle
45
cos cosoutside coneangle
46
subfff cosinside coneangle conedeltaangle
47
cos cosinside cosinside
48
illuminate2 from A coneangle
52
pow $1 cosangle beamdistribution
55
smoothstep $1 cosoutside cosinside cosangle
57
mulvvf Cl lightcolor intensity