1) change shader system: look into fx files 2) tone mapping bloom (gaussian blur) use downsampling: first 4x4 to luminance then 3 times further to 1x1 use 3 new render render targets for this 3) mrt channels: 2 mrts: mrt 1: rgba color + emmissive / luminance mrt 2: world pos + projected depth mrt 3: normals + w coordinate mrt 4: flip-flop for mrt1 4) idea: donwsample color texture for ao 5) use depth formula on projected depth (or use linear depth) in order to combine ao + diffuse lookup into on texture lookup reorder mrts: mrt 1: rgba color + projected depth mrt 2: luminance mrt 3: normals + w coordinate mrt 4: flip-flop with mrt1 / store luminance after ssao 6) render sun disc ssao: 1) implement bilateral filtering 2) check physical properties paper of 2007 arikan formula: SW(P, C, r) = 2 * pi * (1 - cos(asin (r / |PC|))) but not working properly! 3) normal mapping working but already done! problems: 4) update of converged regions something could become visible a) from outside b) from previously occluded regions a) could use ratio of samples outside current frame / last frame but slows donw code 5) dynamic objects: a) make ao stick on object: this should be possible somehow, as the information is still available!! tried to use difference of ao intensity between previous and current frame to find out if pixel ao is not valid anymore. but problems as some flickering was introduced while update of dynamic objects was not fast enough (annoying grey fade effect) b) fix the contact shadow on the floor: check when pixel not valid anymore: do that by checking for each sample if they were invalidated recently. if so, then invalidate current pixel ao. for each point, theoretically you don't have to compare the depth of the current pixel, but the depth of the samples taken for ao idea for incorporation of dynamic objects: store object id with render target for each object we know the trafo when doing the back projection => as usual: we have the world space position of the current pixel find pixel from last frame using the old projection view trafo but now we first apply the inverse transformation that brought the last pixel to the current pixel and then the old projection view!! => now we do the equality comparison as usual for reducing flickering: keep chain of kernels constant based on the state of convergence=> only use a single kernel, rotate based on noise texture we use fixed offset into the noise texture based on the #frames samples were accumulated problem: ========================= 1) ssao filter kernel: grows smaller too fast => flickering ... use adaptive number of samples instead of size? 2) fix color bleeding 3) fix ssao2 so that ssao contribution stays constant for both methods 4) find physical expressions for constants in ssao 5) retry normal discontinuity for ssao filter 6) fix adaptive sampling for ssao and ssao2 a) sample adaptive if found invalid sample b) sample adaptive if number of valid samples small? q: is it good to choose new weight as we do? (approx 4 frames) or shouldn't we just completely reset sample? shading todo: bloom dof lense flar god rays sun disc environment lighting 1) antialiasing very slow: try separable filter and one direction at a time 2) try cross filter for ssao without tempcoh 3) fix model directory => clean up structure (city/model => models ?) 4) fix namespaces: one main namespace for core functions + math functions? one util namespace 5) clean up hacks: normalmapping render target flipflopping for tone mapping scenequery fix walk speed for deferred shading fix color bleeding fix ao2 fix full resolution mode for the paper: make ao more efficient, for example we do not need to downsample normal texture for ao version 1 also for full resolution mode: test what happens if we do not use downsampling, look why currently so slow with full resolution (was previously > 80 frame or so!!) /////////////// always update tempcoh after changes to sample intensity usw. make halton sequence local to sampling method, no global static!! make better DOF clouds god rays animation ################################ ## pompeii todo: 1) improve performance: make better objects (jiri?) 2) use better bvh code (also use size to handle floor plane) 3) shading problems: create own normals: flat normals use crease angles find out about degenerate vertices find out about missing texcoords ##################################### fix shadows find out ssao artifacts on edges (near edge no ambient occlusion) /////////// shadows not working proberly with chc!!! (too many triangles, slow!!) sibenik: textures dissappear!! optimize!! full resolution, sky test (stencil??), shadows smaller textures?? test normal ssao with simpler shader! fix normals!! ssao should be only for ambient lighting use better buddha model show rotating spheres images of sibenik performance test from vienna? try out method described in the paper for detecting pixels unifiy index and counter fix shadows! make images with / without filter use nicer buddha make samplingstrategy different: poisson has same status as halton, use one of both (parent class randomsampler)