/
main.py
67 lines (50 loc) · 1.79 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import sys
from PyQt4 import QtGui
from antlr4 import FileStream, CommonTokenStream, ParseTreeWalker
from core.api import renderOptions
from core.buckets import BucketOrderInfo, BucketOrderSortType
from application import Application
from core.parallel import ThreadPool
my_renderer = None
my_scene = None
my_camera = None
my_buckets_info = None
def load_from_file(filename):
from loader.pbrt_loader import PbrtLoader
from loader.pbrt.pbrtLexer import pbrtLexer
from loader.pbrt.pbrtParser import pbrtParser
input = FileStream(filename)
lexer = pbrtLexer(input)
tokens = CommonTokenStream(lexer)
loader = pbrtParser(tokens)
tree = loader.body()
printer = PbrtLoader()
walker = ParseTreeWalker()
walker.walk(printer, tree)
def render(multiThreaded: bool = True):
global my_renderer
global my_scene
global my_camera
global my_buckets_info
my_renderer.render(my_scene, BucketOrderInfo(BucketOrderSortType.Hilbert, 30, 30), multiThreaded)
def main():
global my_renderer
global my_scene
global my_camera
# load_from_file("scenes/ao_02.pbrt")
# load_from_file("scenes/ao_01.pbrt")
# load_from_file("scenes/debug.pbrt")
# load_from_file("scenes/cornell.pbrt")
# load_from_file("scenes/cornellebox_pathtracing_lq.pbrt")
# load_from_file("scenes/cornellebox_pathtracing_mq.pbrt")
load_from_file("scenes/cornellebox_pathtracing_jensen_lq.pbrt")
my_renderer = renderOptions.make_renderer()
my_scene = renderOptions.make_scene()
qt_app = QtGui.QApplication(sys.argv)
app = Application(my_renderer.camera.film)
pool = ThreadPool(1)
pool.add_task(render)
# render(False)
sys.exit(qt_app.exec_())
if __name__ == '__main__':
main()