2 " Language: Radiance Scene Description
3 " Maintainer: Georg Mischler <schorsch@schorsch.com>
4 " Last change: 26. April. 2001
6 " Radiance is a lighting simulation software package written
7 " by Gregory Ward-Larson ("the computer artist formerly known
8 " as Greg Ward"), then at LBNL.
10 " http://radsite.lbl.gov/radiance/HOME.html
12 " Of course, there is also information available about it
13 " from http://www.schorsch.com/
16 " We take a minimalist approach here, highlighting just the
17 " essential properties of each object, its type and ID, as well as
18 " comments, external command names and the null-modifier "void".
21 " For version 5.x: Clear all syntax items
22 " For version 6.x: Quit when a syntax file was already loaded
25 elseif exists("b:current_syntax")
29 " all printing characters except '#' and '!' are valid in names.
31 setlocal iskeyword=\",$-~
37 syn keyword radianceKeyword void
39 " The different kinds of scene description object types
41 syn keyword radianceExtraType contained alias instance
43 syn keyword radianceSurfType contained ring polygon sphere bubble
44 syn keyword radianceSurfType contained cone cup cylinder tube source
45 " Emitting material types
46 syn keyword radianceLightType contained light glow illum spotlight
48 syn keyword radianceMatType contained mirror mist prism1 prism2
49 syn keyword radianceMatType contained metal plastic trans
50 syn keyword radianceMatType contained metal2 plastic2 trans2
51 syn keyword radianceMatType contained metfunc plasfunc transfunc
52 syn keyword radianceMatType contained metdata plasdata transdata
53 syn keyword radianceMatType contained dielectric interface glass
54 syn keyword radianceMatType contained BRTDfunc antimatter
55 " Pattern modifier types
56 syn keyword radiancePatType contained colorfunc brightfunc
57 syn keyword radiancePatType contained colordata colorpict brightdata
58 syn keyword radiancePatType contained colortext brighttext
59 " Texture modifier types
60 syn keyword radianceTexType contained texfunc texdata
62 syn keyword radianceMixType contained mixfunc mixdata mixpict mixtext
65 " Each type name is followed by an ID.
66 " This doesn't work correctly if the id is one of the type names of the
67 " same class (which is legal for radiance), in which case the id will get
68 " type color as well, and the int count (or alias reference) gets id color.
70 syn region radianceID start="\<alias\>" end="\<\k*\>" contains=radianceExtraType
71 syn region radianceID start="\<instance\>" end="\<\k*\>" contains=radianceExtraType
73 syn region radianceID start="\<source\>" end="\<\k*\>" contains=radianceSurfType
74 syn region radianceID start="\<ring\>" end="\<\k*\>" contains=radianceSurfType
75 syn region radianceID start="\<polygon\>" end="\<\k*\>" contains=radianceSurfType
76 syn region radianceID start="\<sphere\>" end="\<\k*\>" contains=radianceSurfType
77 syn region radianceID start="\<bubble\>" end="\<\k*\>" contains=radianceSurfType
78 syn region radianceID start="\<cone\>" end="\<\k*\>" contains=radianceSurfType
79 syn region radianceID start="\<cup\>" end="\<\k*\>" contains=radianceSurfType
80 syn region radianceID start="\<cylinder\>" end="\<\k*\>" contains=radianceSurfType
81 syn region radianceID start="\<tube\>" end="\<\k*\>" contains=radianceSurfType
83 syn region radianceID start="\<light\>" end="\<\k*\>" contains=radianceLightType
84 syn region radianceID start="\<glow\>" end="\<\k*\>" contains=radianceLightType
85 syn region radianceID start="\<illum\>" end="\<\k*\>" contains=radianceLightType
86 syn region radianceID start="\<spotlight\>" end="\<\k*\>" contains=radianceLightType
88 syn region radianceID start="\<mirror\>" end="\<\k*\>" contains=radianceMatType
89 syn region radianceID start="\<mist\>" end="\<\k*\>" contains=radianceMatType
90 syn region radianceID start="\<prism1\>" end="\<\k*\>" contains=radianceMatType
91 syn region radianceID start="\<prism2\>" end="\<\k*\>" contains=radianceMatType
92 syn region radianceID start="\<metal\>" end="\<\k*\>" contains=radianceMatType
93 syn region radianceID start="\<plastic\>" end="\<\k*\>" contains=radianceMatType
94 syn region radianceID start="\<trans\>" end="\<\k*\>" contains=radianceMatType
95 syn region radianceID start="\<metal2\>" end="\<\k*\>" contains=radianceMatType
96 syn region radianceID start="\<plastic2\>" end="\<\k*\>" contains=radianceMatType
97 syn region radianceID start="\<trans2\>" end="\<\k*\>" contains=radianceMatType
98 syn region radianceID start="\<metfunc\>" end="\<\k*\>" contains=radianceMatType
99 syn region radianceID start="\<plasfunc\>" end="\<\k*\>" contains=radianceMatType
100 syn region radianceID start="\<transfunc\>" end="\<\k*\>" contains=radianceMatType
101 syn region radianceID start="\<metdata\>" end="\<\k*\>" contains=radianceMatType
102 syn region radianceID start="\<plasdata\>" end="\<\k*\>" contains=radianceMatType
103 syn region radianceID start="\<transdata\>" end="\<\k*\>" contains=radianceMatType
104 syn region radianceID start="\<dielectric\>" end="\<\k*\>" contains=radianceMatType
105 syn region radianceID start="\<interface\>" end="\<\k*\>" contains=radianceMatType
106 syn region radianceID start="\<glass\>" end="\<\k*\>" contains=radianceMatType
107 syn region radianceID start="\<BRTDfunc\>" end="\<\k*\>" contains=radianceMatType
108 syn region radianceID start="\<antimatter\>" end="\<\k*\>" contains=radianceMatType
110 syn region radianceID start="\<colorfunc\>" end="\<\k*\>" contains=radiancePatType
111 syn region radianceID start="\<brightfunc\>" end="\<\k*\>" contains=radiancePatType
112 syn region radianceID start="\<colordata\>" end="\<\k*\>" contains=radiancePatType
113 syn region radianceID start="\<brightdata\>" end="\<\k*\>" contains=radiancePatType
114 syn region radianceID start="\<colorpict\>" end="\<\k*\>" contains=radiancePatType
115 syn region radianceID start="\<colortext\>" end="\<\k*\>" contains=radiancePatType
116 syn region radianceID start="\<brighttext\>" end="\<\k*\>" contains=radiancePatType
118 syn region radianceID start="\<texfunc\>" end="\<\k*\>" contains=radianceTexType
119 syn region radianceID start="\<texdata\>" end="\<\k*\>" contains=radianceTexType
121 syn region radianceID start="\<mixfunc\>" end="\<\k*\>" contains=radianceMixType
122 syn region radianceID start="\<mixdata\>" end="\<\k*\>" contains=radianceMixType
123 syn region radianceID start="\<mixtext\>" end="\<\k*\>" contains=radianceMixType
125 " external commands (generators, xform et al.)
126 syn match radianceCommand "^\s*!\s*[^\s]\+\>"
129 syn keyword radianceTodo contained TODO XXX
130 syn match radianceComment "#.*$" contains=radianceTodo
132 " Define the default highlighting.
133 " For version 5.7 and earlier: only when not done already
134 " For version 5.8 and later: only when an item doesn't have highlighting yet
135 if version >= 508 || !exists("did_radiance_syn_inits")
137 let did_radiance_syn_inits = 1
138 command -nargs=+ HiLink hi link <args>
140 command -nargs=+ HiLink hi def link <args>
142 HiLink radianceKeyword Keyword
143 HiLink radianceExtraType Type
144 HiLink radianceSurfType Type
145 HiLink radianceLightType Type
146 HiLink radianceMatType Type
147 HiLink radiancePatType Type
148 HiLink radianceTexType Type
149 HiLink radianceMixType Type
150 HiLink radianceComment Comment
151 HiLink radianceCommand Function
152 HiLink radianceID String
153 HiLink radianceTodo Todo
157 let b:current_syntax = "radiance"