ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/doc/notes/language.BNR
Revision: 1.1
Committed: Sat Mar 15 17:32:55 2003 UTC (21 years, 1 month ago) by greg
Branch: MAIN
CVS Tags: rad5R4, rad5R2, rad4R2P2, rad5R0, rad5R1, rad3R7P2, rad3R7P1, rad4R2, rad4R1, rad4R0, rad3R5, rad3R6, rad3R6P1, rad3R8, rad3R9, rad4R2P1, rad5R3, HEAD
Log Message:
Added and updated documentation for 3.5 release

File Contents

# Content
1 RADIANCE Scene Description Language
2
3 Altogether there are at least 4 "languages" involved with Radiance
4 scene descriptions: the basic scene input language, the function file
5 language, the data file language and the font language.
6
7 Scene Input
8 ===========
9
10 scenefile: /* nothing */
11 | statement scenefile
12
13 statement: primitive
14 | alias
15 | command
16 | comment
17
18 primitive: modifier type STRING
19 INTEGER string_args
20 INTEGER integer_args
21 INTEGER real_args
22
23 alias: modifier alias STRING STRING
24
25 modifier: "void"
26 | "inherit"
27 | STRING
28
29 command: '!' STRING string_args command_end
30
31 command_end: '\n'
32 | '\\' '\n' string_args command_end
33
34 comment: '#' string_args '\n'
35
36 string_args: /* nothing */
37 | STRING string_args
38
39 integer_args: /* nothing */
40 | INTEGER integer_args
41
42 real_args: /* nothing */
43 | REAL real_args
44
45 type: "polygon"
46 | "cone"
47 | "sphere"
48 | "texfunc"
49 | "ring"
50 | "cylinder"
51 | "instance"
52 | "cup"
53 | "bubble"
54 | "tube"
55 | "mesh"
56 | "plastic"
57 | "metal"
58 | "glass"
59 | "trans"
60 | "dielectric"
61 | "plastic2"
62 | "metal2"
63 | "trans2"
64 | "interface"
65 | "plasfunc"
66 | "metfunc"
67 | "brightfunc"
68 | "brightdata"
69 | "brighttext"
70 | "colorpict"
71 | "glow"
72 | "source"
73 | "light"
74 | "illum"
75 | "spotlight"
76 | "mist"
77 | "mirror"
78 | "transfunc"
79 | "BRTDfunc"
80 | "plasdata"
81 | "metdata"
82 | "transdata"
83 | "colorfunc"
84 | "antimatter"
85 | "colordata"
86 | "colortext"
87 | "texdata"
88 | "mixfunc"
89 | "mixdata"
90 | "mixtext"
91 | "prism1"
92 | "prism2"
93
94 Function File
95 =============
96
97 funcfile: /* nothing */
98 | decl funcfile
99
100 decl: ';'
101 | function_decl ';'
102 | variable_decl ';'
103
104 function_decl: ID '(' id_list ')' assign_op e1
105
106 variable_decl: ID assign_op e1
107
108 id_list: ID
109 | ID ',' id_list
110
111 assign_op: '='
112 | ':'
113
114 e1: e1 '+' e2
115 | e1 '-' e2
116 | e2
117
118 e2: e2 '*' e3
119 | e2 '/' e3
120 | e3
121
122 e3: e4 '^' e3
123 | e4
124
125 e4: '+' e5
126 | '-' e5
127 | e5
128
129 e5: '(' e1 ')'
130 | ID
131 | ID '(' id_list ')'
132 | REAL
133 | '$' INTEGER
134
135 Comments may appear between any two tokens set off by curly braces {},
136 and may be nested to any level.
137
138 Data File
139 =========
140
141 data: dimensions value_list
142
143 dimensions: INTEGER dim_list
144
145 dim_list: dim
146 | dim dim_list
147
148 dim: REAL REAL INTEGER
149 | '0' '0' INTEGER indep_list
150
151 indep_list: REAL
152 | REAL indep_list
153
154 value_list: /* nothing */
155 | REAL value_list
156
157 Comments begin with a pound sign ('#') and continue to the end of line.
158
159 Font File
160 =========
161
162 glyph_list: /* nothing */
163 | glyph glyph_list
164
165 glyph: INTEGER INTEGER coord_list
166
167 coord_list: /* nothing */
168 | INTEGER INTEGER coord_list
169
170 Comments begin with a pound sign ('#') and continue to the end of line.
171
172 --------------------------------------------------------------
173
174 With regards to your topics, I have the following comments.
175
176 Specification of scene parameters:
177 - Radiance uses a right-hand coordinate system
178 - The eyepoint and view direction are given as options
179 to the renderers, and can be stored in a separate file
180
181 Supported primitives:
182 - N-sided polygons
183 - spheres
184 - cones, cylinders, rings
185 - hierarchical instancing for very complex geometries
186
187 Lighting models:
188 - Completely general
189 - Converter provided for IES luminaire specification
190
191 Participating media:
192 - Single-scatter approximation
193 - Mist zones may have different scattering/absorption properties
194
195 Textures:
196 - I break "textures" into two kinds, patterns and textures
197 - Patterns are variation in color, and can be specified as
198 pictures, data or functions in any combination
199 - Textures are perturbations in surface normal, and can
200 be specified in the same ways as patterns
201 - A light source distribution is a pattern
202
203 Bit Mapping:
204 - Usually given as a picture-type pattern (ie. "colorpict" type)
205 - True bit-maps (ie. 1-bit depth images) may also be produced
206 using a special bit font
207
208 CSG:
209 - Radiance has an "antimatter" type which supports some rudimentary
210 CSG subtraction, but otherwise we are strictly B-rep
211
212 Looping constructs or Recursion:
213 - The function file language supports recursion
214 - The "xform" program provides iteration for repeated objects
215
216 Functions or Procedures:
217 - The function file language supports functions without side effects
218
219 User extensibility:
220 - The user may create function files, data files and font files,
221 or provide his/her own images for patterns
222 - General bidirectional reflection distribution functions may
223 also be specified in the same way as patterns and textures
224