#161
16 декабря 2010 в 14:59
[quote author=Barnes link=topic=575.msg14229#msg14229 date=1292504789]<br />лог игры где?<br />[/quote]<br /><br />http://narod.ru/disk/1534332001/qconsole.log.html
#162
16 декабря 2010 в 15:05
хахаха)) у тебя шейдера не собрались)))))))))<br />буду думать)))
#163
16 декабря 2010 в 15:13
Кирилл, выложи шейдер, может смогу помочь. Вероятно в них косяк с синтаксисом. АТИ компилятор капризный, если у тебя на Джифорсе работает, то на Радике может не работать.<br />Например запись<br /> float a = 1; <br />на джифорсе проканает, а радик пошлёт на много матершинных букаф ;D<br /><br />либо ты применил вендор-зависимую фишку...
#164
16 декабря 2010 в 20:09
Серег, мат основной на дефайны, как я понял, + реально вендор специфик.<br />Хоя с другой стороны, этот ром параллакс мы все использовали.<br />код вот<br /><br />дефайн<br /><br />
CAUSTICS<br />PARALLAX<br />LIGHTMAP<br />VERTEXLIGHT
<br /><br />вертекс<br /><br /><br />//calc view <br />uniform vec3 u_viewOriginES;<br />varying vec3 v_viewVecTS;<br /><br />attribute vec3 a_tangent;<br />attribute vec3 a_binormal;<br /><br />void main ()<br />{<br />gl_TexCoord[0] = gl_MultiTexCoord0; // diffuse, addative, caustics<br />gl_TexCoord[1] = gl_MultiTexCoord1; // lightmap only<br /><br />#ifdef PARALLAX<br /><br />// calculate tangent space view vector for parallax<br />vec3 tmp = u_viewOriginES - gl_Vertex.xyz;<br /><br />v_viewVecTS.x = dot(tmp, a_tangent);<br />v_viewVecTS.y = dot(tmp, a_binormal);<br />v_viewVecTS.z = dot(tmp, gl_Normal);<br />#endif<br /><br />gl_Position = ftransform();<br /><br />gl_FrontColor = gl_Color;<br />}
<br /><br />фраг<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);<br /> <br /> float height = 1.0 - step;<br /> vec2 offset = texCoord + delta;<br /> float NB1 = texture2D(hiMap, offset);<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);<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);<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 />
#165
16 декабря 2010 в 22:32
Using new exe with sse1 support, Game starts enough to generate .log then Crash. Getting close: <br />http://www-personal.umich.edu/~jimw/q2/qconsole.log
#166
17 декабря 2010 в 08:31
Кирилл, поглядел шейдеры, вроде придраться не к чему, должно работать.<br /><br />Пара вопросов:<br />1. В шейдеры не добавляешь какие нить опции типа "#precision highp float" ?<br />2. GL контекст случайно не 3 версии?<br /><br />Попробуй:<br />1. добавляй в начале каждого шейдера строчку (если такового еще нет)<br />#version 110<br />(или повыше версию GLSL, но начни с этой. Так у меня в Q3Bers работает).<br />2. выражения проще и одной строкой. Может у компилятора мозги клинит от парсинга?<br />3. избавляйся от старого функционала. нВИдиа сохраняет старьё для совместимости, а АТИ шустро урезает всё что не вписывается в спецификации. Например, цвет из вершинника передаешь в gl_FrontColor. Я же, передаю любую инфу через varying.<br /><br />
Cannot convert from 'default varying 4-component vector of float' to 'highp 3-component vector of float'<br />а ошибки такого рода обычно из-за передачи vec3 <=> vec4
#167
17 декабря 2010 в 21:04
Пара вопросов:<br />1. В шейдеры не добавляешь какие нить опции типа "#precision highp float" ?<br />2. GL контекст случайно не 3 версии?<br />Нет и нет) У меня обычное wgl окошко с мультисампилингом<br />(добавь в ку2, там ничего сложного)<br />
1. добавляй в начале каждого шейдера строчку (если такового еще нет)<br />#version 110<br />Яволь майн фюрер) Я думал о этом. Но стоп У меня куча ректанглов, а это вроде 1.4 или я не прав?<br />
2. выражения проще и одной строкой. Может у компилятора мозги клинит от парсинга?<br />Блин вроде все простое. И я не догоняю почему мат на дефайны:? :o<br />
3. избавляйся от старого функционала. нВИдиа сохраняет старьё для совместимости, а АТИ шустро урезает всё что не вписывается в спецификации. Например, цвет из вершинника передаешь в gl_FrontColor. Я же, передаю любую инфу через varying.<br />Поправлю)<br />
а ошибки такого рода обычно из-за передачи vec3 <=> vec4<br />Я тещу шейдеры через утилиту от 3д лабз. Так вот прикол - все окей а вот шейдер освещения моделей там не собираться, хотя в игре все ок
#168
18 декабря 2010 в 05:33
У меня куча ректанглов, а это вроде 1.4 или я не прав<br />#version - это указание версии не GL, а шейдеров GLSL<br /><br />у тебя есть АТИ под рукой?<br />если нет, дай ссылку на минимальный Q2XP с шейдерами, будет время, смогу потестить на HD4670
#169
19 декабря 2010 в 20:25
[quote author=makron147 link=topic=575.msg14228#msg14228 date=1292503335]<br />все равно при запуске выкидывает :( видеокарта АТИ 4870<br />[/quote]<br />У нас тут оживленные диспуты по поводу ати.<br />Не подскажешь какой версии драйвера?
#170
20 декабря 2010 в 05:43
[quote author=Barnes link=topic=575.msg14243#msg14243 date=1292790358]<br />У нас тут оживленные диспуты по поводу ати.<br />Не подскажешь какой версии драйвера?<br />[/quote]<br />вот. <br />