source: GTP/trunk/App/Demos/Vis/FriendlyCulling/toto.txt @ 3203

Revision 3203, 3.2 KB checked in by mattausch, 16 years ago (diff)

only adapting filter size left ...

Line 
11) change shader system: look into fx files
22) tone mapping
3   bloom (gaussian blur)
4   use downsampling: first 4x4 to luminance then 3 times further to 1x1
5   use 3 new render render targets for this
6
73) mrt channels:
8
92 mrts:
10
11mrt 1: rgba color + emmissive / luminance
12mrt 2: world pos + projected depth
13mrt 3: normals + w coordinate
14mrt 4: flip-flop for mrt1
15
16
174) idea: donwsample color texture for ao
18
195) use depth formula on projected depth (or use linear depth)
20   in order to combine ao + diffuse lookup into on texture lookup
21
22
23reorder mrts:
24
25mrt 1: rgba color + projected depth
26mrt 2: luminance
27mrt 3: normals + w coordinate
28mrt 4: flip-flop with mrt1 / store luminance after ssao
29
30
316) render sun disc
32
33
34
35ssao:
36
371) implement bilateral filtering
382) check physical properties
39
40paper of 2007 arikan formula:
41
42SW(P, C, r) = 2 * pi * (1 - cos(asin (r / |PC|)))
43
44but not working properly!
45
463) normal mapping
47
48
49problems:
50
514) update of converged regions
52
53something could become visible
54
55a) from outside
56b) from previously occluded regions
57
58a) could use ratio of samples outside current frame / last frame
59   but slows donw code
60
615) dynamic objects:
62
63a) make ao stick on object: this should
64   be possible somehow, as the information is still available!!
65 
66   tried to use difference of ao intensity between previous and
67   current frame to find out if pixel ao is not valid anymore.
68   but problems as some flickering was introduced while update of
69   dynamic objects was not fast enough (annoying grey fade effect)
70
71b) fix the contact shadow on the floor:
72
73check when pixel not valid anymore: do that by checking for each
74sample if they were invalidated recently. if so, then invalidate
75current pixel ao. for each point, theoretically you don't have
76to compare the depth of the current pixel, but the depth of the
77samples taken for ao
78
79
80idea for incorporation of dynamic objects:
81
82store object id with render target
83for each object we know the trafo
84when doing the back projection =>
85
86as usual:
87we have the world space position of the current pixel
88find pixel from last frame using the old projection view trafo
89
90but now we first apply the inverse transformation that brought the
91last pixel to the current pixel and then the old projection view!!
92
93=> now we do the equality comparison as usual
94
95
96for reducing flickering:
97
98
99keep chain of kernels constant based on the state of convergence=>
100
101only use a single kernel, rotate based on noise texture
102we use fixed offset into the noise texture based on the #frames samples were accumulated
103
104problem:
105
106
107
108=========================
109
1101) ssao filter kernel: grows smaller too fast => flickering ... use
111adaptive number of samples instead of size?
1122) fix color bleeding
1133) fix ssao2 so that ssao contribution stays constant
1144) find physical expressions for constants in ssao
1155) retry normal discontinuity for ssao filter
1166) fix adaptive sampling for ssao and ssao2
117   a) sample adaptive if found invalid sample
118   b) sample adaptive if number of valid samples small?
119   
120   q: is it good to choose new weight as we do? (approx 4 frames)
121   or shouldn't we just completely reset sample?
Note: See TracBrowser for help on using the repository browser.