#171
20 декабря 2010 в 07:29
2makron147 Не,ты немного не то щёлкнул,надо то не версию контрол сентера,а самих дровишек.Это вкладка на самой панели Graphic Settings->Information Center->Graphics Software->ну и тут щёлкай.;)
#173
20 декабря 2010 в 09:17
замени содержимое baseq2/glsl/diffuse.fp на этот код<br /><br />
<br />/*<br />===================<br />ParallaxOcclusionMap<br /><br />High quality, uses Crysis(tm) shader.<br />===================<br />*/<br /><br />uniform vec2 u_bumpScale;<br /><br />vec2 ParallaxOcclusionMap (in sampler2D hiMap, in vec2 texCoord, in vec3 viewVec, int numSteps) {<br /> float step = 1.0 / float(numSteps);<br /> <br /> vec2 delta = 2.0 * u_bumpScale * viewVec.xy / (-viewVec.z * float(numSteps));<br /> <br /> float NB0 = texture2D(hiMap, texCoord).r;<br /> <br /> float height = 1.0 - step;<br /> vec2 offset = texCoord + delta;<br /> float NB1 = texture2D(hiMap, offset).r;<br /><br /> for (int i=0; i<numSteps; i++) {<br /> if (NB1 >= height)<br /> break;<br /> <br /> NB0 = NB1;<br /><br /> height -= step;<br /> offset += delta;<br /><br /> NB1 = texture2D(hiMap, offset).r;<br /> }<br /> <br /> vec2 offsetBest = offset;<br /> float error = 1.0;<br /><br /> float t1 = height;<br /> float t0 = t1 + step;<br /> <br /> float delta1 = t1 - NB1;<br /> float delta0 = t0 - NB0;<br /><br /> vec4 intersect = vec4(delta * numSteps, delta * numSteps + texCoord);<br /><br /> for (int i = 0; i < 10; i++) {<br /> if (abs(error) <= 0.01)<br /> break;<br /> <br /> float denom = delta1 - delta0;<br /> float t = (t0 * delta1 - t1 * delta0) / denom;<br /> offsetBest = -t * intersect.xy + intersect.zw;<br /> <br /> float NB = texture2D(hiMap, offsetBest).r;<br /><br /> error = t - NB;<br /> if (error < 0.0) {<br /> delta1 = error;<br /> t1 = t;<br /> }<br /> else {<br /> delta0 = error;<br /> t0 = t;<br /> }<br /> }<br /> <br /> return offsetBest;<br />}<br /><br /><br />uniform sampler2D u_Diffuse;<br />uniform sampler2D u_LightMap;<br />uniform sampler2D u_Add;<br />uniform float u_ColorModulate; <br /><br /><br />uniform sampler2D u_Caustics;<br />uniform float u_CausticsModulate; <br /><br />uniform sampler2D u_Parallax;<br />varying vec3 v_viewVecTS;<br /><br />void main ()<br />{<br />vec4 tmp;<br /><br />#ifdef PARALLAX<br />vec3 V = normalize(v_viewVecTS);<br />vec2 P = ParallaxOcclusionMap(u_Parallax, gl_TexCoord[0].xy, V, 8);<br /><br />vec4 r0 = texture2D(u_Diffuse, P);<br />vec4 r1 = texture2D(u_LightMap, gl_TexCoord[1].xy); <br />vec4 r2 = texture2D(u_Add, P);<br />vec4 r3 = texture2D(u_Caustics, P);<br /><br /><br />#else<br /><br />vec4 r0 = texture2D(u_Diffuse, gl_TexCoord[0].xy);<br />vec4 r1 = texture2D(u_LightMap, gl_TexCoord[1].xy); <br />vec4 r2 = texture2D(u_Add, gl_TexCoord[0].xy);<br />vec4 r3 = texture2D(u_Caustics, gl_TexCoord[0].xy);<br />#endif <br /><br />vec4 color;<br /><br />#ifdef LIGHTMAP<br />r0 *= r1;<br />#endif<br /><br />#ifdef VERTEXLIGHT<br />r0 *= gl_Color;<br />#endif<br /><br />color = r0 + r2;<br /><br />#ifdef CAUSTICS<br />tmp = r3 * color;<br />tmp *= u_CausticsModulate;<br />color = tmp + color;<br />#endif<br /><br />gl_FragColor = color * u_ColorModulate;<br /><br />}
<br />И откатись на старые драйвера к примеру на последний прошлогодний<br />Новый экзе возьми с сайта work/quake2xp.exe
#174
20 декабря 2010 в 10:13
все сделал, эффект тот же<br />лог:<br />http://narod.ru/disk/1756492001/qconsole.log.html
#175
28 декабря 2010 в 14:10
ээ а где самую последнюю версию взять, бета устроит-на сайте только 2009 года версия :D
#176
28 декабря 2010 в 15:47
думаешь стоит? она только на нвидии работает. под гл2.0 к стати исключительно<br />я поддержку старого железа убрал
#177
29 декабря 2010 в 07:25
у меня нвидия гл 2.0 тянет-ну должна по крайней мере
#178
01 января 2011 в 18:47
http://quake2xp.quakedev.com/work/q2xp.7z<br />вот пожалуйста.
#180
04 января 2011 в 11:05
поправлена работа Q2XP на АТИ ;)<br />Дело оказалось опять таки в различиях реализации шейдеров GLSL на ATI и NVidia :D<br />В Q2XP дифайны скармливались как строки типа:<br />"#define "<br />"CAUSTICS"<br />"\n" (окончание, перенос строки)<br />Нвидия легко ховает такой текст, читая это как "#define CAUSTICS"<br />АТИ автоматически вставляла символ конца строки после каждой строчки, поэтому получался текст:<br />#define <br />CAUSTICS<br />что вызывало ошибку компиляции.<br /><br />Попутно поправлено: вылет если OpenAL не инициализировался, и переименовал кэш моделей в *.md2_xp, чтобы не пересекаться с кешем Берса.<br /><br />Осталось подождать когда Кирилл выложит сборку.