… | |
… | |
113 | matrix perspective; |
113 | matrix perspective; |
114 | #if 1 |
114 | #if 1 |
115 | { |
115 | { |
116 | matrix &m = perspective; |
116 | matrix &m = perspective; |
117 | |
117 | |
118 | m(0,0) = 1.F / xmax; m(0,1) = 0; m(0,2) = 0; m(0,3) = 0; |
118 | m(0,0) = 1.F / xmax; m(0,1) = 0; m(0,2) = 0; m(0,3) = 0; |
119 | m(1,0) = 0; m(1,1) = 1.F / ymax; m(1,2) = 0; m(1,3) = 0; |
119 | m(1,0) = 0; m(1,1) = 1.F / ymax; m(1,2) = 0; m(1,3) = 0; |
120 | m(2,0) = 0; m(2,1) = 0; m(2,2) = -2.F / z_far; m(2,3) = 0; |
120 | m(2,0) = 0; m(2,1) = 0; m(2,2) = -1e10F / z_far; m(2,3) = 1; |
121 | m(3,0) = 0; m(3,1) = 0; m(3,2) = -1; m(3,3) = 0; |
121 | m(3,0) = 0; m(3,1) = 0; m(3,2) = -1; m(3,3) = 0; |
122 | |
122 | |
123 | glLoadMatrixf (perspective); |
123 | glLoadMatrixf (perspective); |
124 | } |
124 | } |
125 | #else |
125 | #else |
126 | glFrustum (-xmax, xmax, -ymax, ymax, z_near, z_far); |
126 | glFrustum (-xmax, xmax, -ymax, ymax, z_near, z_far); |
… | |
… | |
213 | switch (pass_type) |
213 | switch (pass_type) |
214 | { |
214 | { |
215 | case DEPTH: |
215 | case DEPTH: |
216 | glColorMask (1, 1, 1, 1); |
216 | glColorMask (1, 1, 1, 1); |
217 | glDepthMask (1); |
217 | glDepthMask (1); |
|
|
218 | glDisable (GL_BLEND); |
218 | |
219 | |
219 | glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); |
220 | //glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); |
|
|
221 | glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); |
220 | |
222 | |
221 | //glEnable (GL_STENCIL_TEST); // for depth-passes |
223 | //glEnable (GL_STENCIL_TEST); // for depth-passes |
222 | //glStencilOp (GL_KEEP, GL_KEEP, GL_REPLACE); |
224 | //glStencilOp (GL_KEEP, GL_KEEP, GL_REPLACE); |
223 | //glStencilFunc (GL_LESS, 1, 255); |
225 | //glStencilFunc (GL_LESS, 1, 255); |
224 | |
226 | |
225 | //glEnable (GL_POLYGON_OFFSET_FILL); |
227 | //glEnable (GL_POLYGON_OFFSET_FILL); |
226 | //glPolygonOffset (0, 5); |
228 | //glPolygonOffset (0, 5); |
|
|
229 | glEnable (GL_CULL_FACE); |
227 | glDisable (GL_MINMAX); |
230 | glDisable (GL_MINMAX); |
228 | glDepthRange (DEPTH_OFFSET, 1.); |
231 | glDepthRange (DEPTH_OFFSET, 1.); |
229 | glDepthFunc (GL_LESS); |
232 | glDepthFunc (GL_LESS); |
230 | glEnable (GL_DEPTH_TEST); |
233 | glEnable (GL_DEPTH_TEST); |
231 | glColorMask (0, 0, 0, 0); |
234 | glColorMask (0, 0, 0, 0); |
… | |
… | |
240 | glDepthFunc (GL_LESS); |
243 | glDepthFunc (GL_LESS); |
241 | glColorMask (0, 0, 0, 0); |
244 | glColorMask (0, 0, 0, 0); |
242 | glDepthMask (0); |
245 | glDepthMask (0); |
243 | glEnable (GL_DEPTH_CLAMP_NV); |
246 | glEnable (GL_DEPTH_CLAMP_NV); |
244 | glDisable (GL_STENCIL_TEST); |
247 | glDisable (GL_STENCIL_TEST); |
|
|
248 | glDisable (GL_CULL_FACE); |
245 | |
249 | |
246 | // check occlusion queries |
250 | // check occlusion queries |
247 | for (vector<oq_data>::iterator i = occ_queries.begin (); i != occ_queries.end (); ++i) |
251 | for (vector<oq_data>::iterator i = occ_queries.begin (); i != occ_queries.end (); ++i) |
248 | { |
252 | { |
249 | occ_query oq(*this, i->data, ::occ_query_result (i->id)); |
253 | occ_query oq(*this, i->data, ::occ_query_result (i->id)); |
… | |
… | |
253 | occ_queries.clear (); |
257 | occ_queries.clear (); |
254 | |
258 | |
255 | break; |
259 | break; |
256 | |
260 | |
257 | case LIGHTED: |
261 | case LIGHTED: |
|
|
262 | glEnable (GL_CULL_FACE); |
|
|
263 | //glEnable (GL_BLEND);//TODO, only when not first lighted pass |
|
|
264 | glBlendFunc (GL_ONE, GL_ONE); |
258 | glClear (GL_STENCIL_BUFFER_BIT); |
265 | //glClear (GL_STENCIL_BUFFER_BIT); |
259 | //glEnable (GL_STENCIL_TEST); |
266 | //glEnable (GL_STENCIL_TEST); |
260 | glEnable (GL_MINMAX); |
267 | glEnable (GL_MINMAX); |
261 | glDepthRange (0., 1. - DEPTH_OFFSET); |
268 | glDepthRange (0., 1. - DEPTH_OFFSET); |
262 | glDepthFunc (GL_LESS); |
269 | glDepthFunc (GL_LESS); |
263 | glColorMask (1, 1, 1, 1); |
270 | glColorMask (1, 1, 1, 1); |
… | |
… | |
319 | void linear_light::fsh () |
326 | void linear_light::fsh () |
320 | { |
327 | { |
321 | using namespace shader::compile; |
328 | using namespace shader::compile; |
322 | |
329 | |
323 | sh_lightvec = lightvec; |
330 | sh_lightvec = lightvec; |
324 | sh_colour = float3 (c.r / 255.F, c.g / 255.F, c.b / 255.F) * (min (intensity * camdist * 0.6F + 0.9F, 1.F)); |
331 | sh_colour = float3 (c.r / 255.F, c.g / 255.F, c.b / 255.F) * (min (intensity * camdist * 100.F + 0.9F, 1.F)); |
325 | } |
332 | } |
326 | |
333 | |
327 | |
334 | |