HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Как профиксить глоу ? (https://hlfx.ru/forum/showthread.php?threadid=1015)
Отправлено FiEctro 20-11-2007 в 17:49:
Как профиксить глоу ?
Собсно сталкунулся с непонятнейшим и неприятнейшим багом со спиритовским глоу ( см. аттач ) ...
Сразу говорю дело !только! в коде глоу т.к. я тестил и с разными cg и на самом спирите .. Эффект был один и тоже ...
Вот собсно код чтоб вам спирит не качать ...
C++ Source Code:
1 | #include "r_studioint.h" |
3 | extern engine_studio_api_t IEngineStudio; |
6 | bool bGlowShaderInitialised = false; |
7 | bool bGlowLowEndInitialised = false; |
10 | CGprofile g_cgVertProfile; |
11 | CGprofile g_cgFragProfile; |
13 | CGprogram g_cgVP_GlowDarken; |
14 | CGprogram g_cgFP_GlowDarken; |
16 | CGprogram g_cgVP_GlowBlur; |
17 | CGprogram g_cgFP_GlowBlur; |
19 | CGprogram g_cgVP_GlowCombine; |
20 | CGprogram g_cgFP_GlowCombine; |
22 | CGparameter g_cgpVP0_ModelViewMatrix; |
23 | CGparameter g_cgpVP1_ModelViewMatrix; |
24 | CGparameter g_cgpVP1_XOffset; |
25 | CGparameter g_cgpVP1_YOffset; |
26 | CGparameter g_cgpVP2_ModelViewMatrix; |
28 | unsigned int g_uiSceneTex; |
29 | unsigned int g_uiBlurTex; |
32 | unsigned int g_uiScreenTex = 0; |
33 | unsigned int g_uiGlowTex = 0; |
36 | void InitScreenGlow(void); |
37 | void InitScreenGlowShader(void); |
38 | void InitScreenGlowLowEnd(void); |
39 | void RenderScreenGlow(void); |
40 | void RenderScreenGlowShader(void); |
41 | void RenderScreenGlowLowEnd(void); |
42 | bool LoadProgram(CGprogram* pDest, CGprofile profile, const char* szFile); |
45 | void DrawQuad(int width, int height, int ofsX = 0, int ofsY = 0) |
50 | glTexCoord2f(ofsX,ofsY); |
52 | glTexCoord2f(ofsX,height+ofsY); |
54 | glTexCoord2f(width+ofsX,height+ofsY); |
56 | glTexCoord2f(width+ofsX,ofsY); |
62 | void RenderScreenGlow() |
64 | if (IEngineStudio.IsHardware() != 1) |
67 | if (CVAR_GET_FLOAT("r_glow") == 0) //check the cvar for the glow is on. |
70 | if (CVAR_GET_FLOAT("r_glow") == 1){ //check the mode is shader |
71 | RenderScreenGlowShader(); //AJH don't need r_glowmode, use r_glow 0/1/2 instead |
74 | else if (CVAR_GET_FLOAT("r_glow") == 2){ //If its not a shader its the lowend |
75 | RenderScreenGlowLowEnd(); //AJH don't need r_glowmode, use r_glow 0/1/2 instead |
81 | if (IEngineStudio.IsHardware() != 1) |
84 | if (CVAR_GET_FLOAT("r_glow") == 0) |
87 | if (CVAR_GET_FLOAT("r_glow") == 1){ |
88 | InitScreenGlowShader(); //AJH don't need r_glowmode, use r_glow 0/1/2 instead |
91 | else if (CVAR_GET_FLOAT("r_glow") == 2){ |
92 | InitScreenGlowLowEnd(); //AJH don't need r_glowmode, use r_glow 0/1/2 instead |
95 | //END glow effect functions -- FragBait0 |
97 | //START shader glow effect -- FragBait0 |
98 | inline bool LoadProgram(CGprogram* pDest, CGprofile profile, const char* szFile) |
100 | const char* szGameDir = gEngfuncs.pfnGetGameDirectory(); |
102 | sprintf(file, "%s/%s", szGameDir, szFile); |
104 | *pDest = cgCreateProgramFromFile(g_cgContext, CG_SOURCE, file, profile, "main", 0); |
106 | MessageBox(NULL, cgGetErrorString(cgGetError()), NULL, NULL); |
110 | cgGLLoadProgram(*pDest); |
115 | void InitScreenGlowShader(void) |
117 | bGlowShaderInitialised = false; |
118 | // OPENGL EXTENSION LOADING |
119 | glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)wglGetProcAddress("glActiveTextureARB"); |
122 | unsigned char* pBlankTex = new unsigned char[ScreenWidth*ScreenHeight*3]; |
123 | memset(pBlankTex, 0, ScreenWidth*ScreenHeight*3); |
125 | glGenTextures(1, &g_uiSceneTex); |
126 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiSceneTex); |
127 | glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_LINEAR); |
128 | glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
129 | glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB8, ScreenWidth, ScreenHeight, 0, GL_RGB8, GL_UNSIGNED_BYTE, pBlankTex); |
131 | glGenTextures(1, &g_uiBlurTex); |
132 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiBlurTex); |
133 | glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_LINEAR); |
134 | glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
135 | glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB8, ScreenWidth/4, ScreenHeight/4, 0, GL_RGB8, GL_UNSIGNED_BYTE, pBlankTex); |
140 | g_cgContext = cgCreateContext(); |
142 | MessageBox(NULL, "Couldn't make Cg context", NULL, NULL); |
147 | g_cgVertProfile = cgGLGetLatestProfile(CG_GL_VERTEX); |
148 | if (g_cgVertProfile == CG_PROFILE_UNKNOWN) { |
149 | MessageBox(NULL, "Couldn't fetch valid VP profile", NULL, NULL); |
153 | cgGLSetOptimalOptions(g_cgVertProfile); |
156 | if (!LoadProgram(&g_cgVP_GlowDarken, g_cgVertProfile, "cg/glow_darken_vp.cg")) |
159 | if (!LoadProgram(&g_cgVP_GlowBlur, g_cgVertProfile, "cg/glow_blur_vp.cg")) |
162 | if (!LoadProgram(&g_cgVP_GlowCombine, g_cgVertProfile, "cg/glow_combine_vp.cg")) |
166 | g_cgpVP0_ModelViewMatrix = cgGetNamedParameter(g_cgVP_GlowDarken, "ModelViewProj"); |
168 | g_cgpVP1_ModelViewMatrix = cgGetNamedParameter(g_cgVP_GlowBlur, "ModelViewProj"); |
169 | g_cgpVP1_XOffset = cgGetNamedParameter(g_cgVP_GlowBlur, "XOffset"); |
170 | g_cgpVP1_YOffset = cgGetNamedParameter(g_cgVP_GlowBlur, "YOffset"); |
172 | g_cgpVP2_ModelViewMatrix = cgGetNamedParameter(g_cgVP_GlowCombine, "ModelViewProj"); |
175 | g_cgFragProfile = cgGLGetLatestProfile(CG_GL_FRAGMENT); |
176 | if (g_cgFragProfile == CG_PROFILE_UNKNOWN) { |
177 | MessageBox(NULL, "Couldn't fetch valid FP profile", NULL, NULL); |
181 | cgGLSetOptimalOptions(g_cgFragProfile); |
184 | if (!LoadProgram(&g_cgFP_GlowDarken, g_cgFragProfile, "cg/glow_darken_fp.cg")) |
187 | if (!LoadProgram(&g_cgFP_GlowBlur, g_cgFragProfile, "cg/glow_blur_fp.cg")) |
190 | if (!LoadProgram(&g_cgFP_GlowCombine, g_cgFragProfile, "cg/glow_combine_fp.cg")) |
193 | bGlowShaderInitialised = true; |
196 | void DoBlur(unsigned int uiSrcTex, unsigned int uiTargetTex, int srcTexWidth, int srcTexHeight, int destTexWidth, int destTexHeight, float xofs, float yofs) |
198 | cgGLBindProgram(g_cgVP_GlowBlur); |
199 | cgGLBindProgram(g_cgFP_GlowBlur); |
201 | glActiveTextureARB(GL_TEXTURE0_ARB); |
202 | glEnable(GL_TEXTURE_RECTANGLE_NV); |
203 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, uiSrcTex); |
205 | glActiveTextureARB(GL_TEXTURE1_ARB); |
206 | glEnable(GL_TEXTURE_RECTANGLE_NV); |
207 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, uiSrcTex); |
209 | glActiveTextureARB(GL_TEXTURE2_ARB); |
210 | glEnable(GL_TEXTURE_RECTANGLE_NV); |
211 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, uiSrcTex); |
213 | glActiveTextureARB(GL_TEXTURE3_ARB); |
214 | glEnable(GL_TEXTURE_RECTANGLE_NV); |
215 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, uiSrcTex); |
217 | cgGLSetParameter1f(g_cgpVP1_XOffset, xofs); |
218 | cgGLSetParameter1f(g_cgpVP1_YOffset, yofs); |
220 | glViewport(0, 0, destTexWidth, destTexHeight); |
222 | DrawQuad(srcTexWidth, srcTexHeight); |
224 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, uiTargetTex); |
225 | glCopyTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB, 0, 0, destTexWidth, destTexHeight, 0); |
228 | void RenderScreenGlowShader(void) |
231 | // check to see if we can render it. |
232 | if (IEngineStudio.IsHardware() != 1){ |
235 | /* AJH - This is redundant as the function now returns if r_glow!=1 |
236 | //check the cvar for the glow is on. |
237 | if (CVAR_GET_FLOAT("r_glow") == 0) |
241 | //if the mode isn't shader then return. |
242 | if (CVAR_GET_FLOAT("r_glow") != 1) |
245 | if (!bGlowShaderInitialised) |
246 | InitScreenGlowShader(); |
248 | if (!bGlowShaderInitialised){ //if the initialisation dosent work for some reason |
249 | gEngfuncs.Cvar_SetValue( "r_glow", 0 ); |
253 | // STEP 1: Grab the screen and put it into a texture |
254 | glActiveTextureARB(GL_TEXTURE0_ARB); |
255 | glEnable(GL_TEXTURE_RECTANGLE_NV); |
257 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiSceneTex); |
258 | glCopyTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB, 0, 0, ScreenWidth, ScreenHeight, 0); |
260 | // STEP 2: Set up an orthogonal projection |
261 | glMatrixMode(GL_MODELVIEW); |
265 | glMatrixMode(GL_PROJECTION); |
268 | glOrtho(0, 1, 1, 0, 0.1, 100); |
272 | // STEP 3: Initialize Cg programs and parameters for darken |
273 | cgGLEnableProfile(g_cgVertProfile); |
274 | cgGLEnableProfile(g_cgFragProfile); |
276 | cgGLBindProgram(g_cgVP_GlowDarken); |
277 | cgGLBindProgram(g_cgFP_GlowDarken); |
279 | cgGLSetStateMatrixParameter(g_cgpVP0_ModelViewMatrix, CG_GL_MODELVIEW_PROJECTION_MATRIX, CG_GL_MATRIX_IDENTITY); |
281 | // STEP 4: Render the current scene texture to a new, lower-res texture, darkening non-bright areas of the scene |
282 | glViewport(0, 0, ScreenWidth/4, ScreenHeight/4); |
283 | glActiveTextureARB(GL_TEXTURE0_ARB); |
285 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiSceneTex); |
287 | DrawQuad(ScreenWidth, ScreenHeight); |
289 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiBlurTex); |
290 | glCopyTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB, 0, 0, ScreenWidth/4, ScreenHeight/4, 0); |
292 | // STEP 5: Initialise Cg programs and parameters for blurring |
293 | cgGLBindProgram(g_cgVP_GlowBlur); |
294 | cgGLBindProgram(g_cgFP_GlowBlur); |
296 | cgGLSetStateMatrixParameter(g_cgpVP1_ModelViewMatrix, CG_GL_MODELVIEW_PROJECTION_MATRIX, CG_GL_MATRIX_IDENTITY); |
299 | int iNumBlurSteps = CVAR_GET_FLOAT("r_glowblur"); //use new CVAR --FragBait0 |
300 | for (int i = 0; i < iNumBlurSteps; i++) { |
301 | DoBlur(g_uiBlurTex, g_uiBlurTex, ScreenWidth/4, ScreenHeight/4, ScreenWidth/4, ScreenHeight/4, 1, 0); |
302 | DoBlur(g_uiBlurTex, g_uiBlurTex, ScreenWidth/4, ScreenHeight/4, ScreenWidth/4, ScreenHeight/4, 0, 1); |
305 | // STEP 7: Set up Cg for combining blurred glow with original scene |
306 | cgGLBindProgram(g_cgVP_GlowCombine); |
307 | cgGLBindProgram(g_cgFP_GlowCombine); |
309 | cgGLSetStateMatrixParameter(g_cgpVP2_ModelViewMatrix, CG_GL_MODELVIEW_PROJECTION_MATRIX, CG_GL_MATRIX_IDENTITY); |
311 | glActiveTextureARB(GL_TEXTURE0_ARB); |
312 | glEnable(GL_TEXTURE_RECTANGLE_NV); |
313 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiSceneTex); |
315 | glActiveTextureARB(GL_TEXTURE1_ARB); |
316 | glEnable(GL_TEXTURE_RECTANGLE_NV); |
317 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiBlurTex); |
319 | // STEP 8: Do the combination, rendering to the screen without grabbing it to a texture |
320 | glViewport(0, 0, ScreenWidth, ScreenHeight); |
322 | DrawQuad(ScreenWidth/4, ScreenHeight/4); |
324 | // STEP 9: Restore the original projection and modelview matrices and disable rectangular textures on all units |
325 | glMatrixMode(GL_PROJECTION); |
328 | glMatrixMode(GL_MODELVIEW); |
331 | cgGLDisableProfile(g_cgVertProfile); |
332 | cgGLDisableProfile(g_cgFragProfile); |
334 | glActiveTextureARB(GL_TEXTURE0_ARB); |
335 | glDisable(GL_TEXTURE_RECTANGLE_NV); |
337 | glActiveTextureARB(GL_TEXTURE1_ARB); |
338 | glDisable(GL_TEXTURE_RECTANGLE_NV); |
340 | glActiveTextureARB(GL_TEXTURE2_ARB); |
341 | glDisable(GL_TEXTURE_RECTANGLE_NV); |
343 | glActiveTextureARB(GL_TEXTURE3_ARB); |
344 | glDisable(GL_TEXTURE_RECTANGLE_NV); |
346 | glActiveTextureARB(GL_TEXTURE0_ARB); |
347 | glClear(GL_DEPTH_BUFFER_BIT); |
349 | //END shader glow effect --FragBait0 |
351 | //START lowend glow effect --FragBait0 |
352 | void InitScreenGlowLowEnd(void) |
354 | bGlowLowEndInitialised = false; |
356 | // create a load of blank pixels to create textures with |
357 | unsigned char* pBlankTex = new unsigned char[ScreenWidth*ScreenHeight*3]; |
358 | memset(pBlankTex, 0, ScreenWidth*ScreenHeight*3); |
360 | // Create the SCREEN-HOLDING TEXTURE |
361 | glGenTextures(1, &g_uiScreenTex); |
362 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiScreenTex); |
363 | glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_LINEAR); |
364 | glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
365 | glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB8, ScreenWidth, ScreenHeight, 0, GL_RGB8, GL_UNSIGNED_BYTE, pBlankTex); |
367 | // Create the BLURRED TEXTURE |
368 | glGenTextures(1, &g_uiGlowTex); |
369 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiGlowTex); |
370 | glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_LINEAR); |
371 | glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
372 | glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB8, ScreenWidth/4, ScreenHeight/4, 0, GL_RGB8, GL_UNSIGNED_BYTE, pBlankTex); |
377 | bGlowLowEndInitialised = true; |
380 | void RenderScreenGlowLowEnd(void) |
383 | // check to see if we can render it. |
384 | if (IEngineStudio.IsHardware() != 1){ |
388 | /* AJH - This is redundant as the function now returns if r_glow!=2 |
389 | //check the cvar for the glow is on. |
390 | if (CVAR_GET_FLOAT("r_glow") == 0) |
393 | //check the mode is low-end |
394 | if (CVAR_GET_FLOAT("r_glow") != 2) //AJH don't need r_glowmode, use r_glow 0/1/2 instead |
397 | if (!bGlowLowEndInitialised) |
398 | InitScreenGlowLowEnd(); |
400 | if (!bGlowLowEndInitialised){ //if the initialisation dosent work for some reason |
401 | gEngfuncs.Cvar_SetValue( "r_glow", 0 ); //AJH may as well set this here too. |
404 | // enable some OpenGL stuff |
405 | glEnable(GL_TEXTURE_RECTANGLE_NV); |
407 | glDisable(GL_DEPTH_TEST); |
409 | // STEP 1: Grab the screen and put it into a texture |
410 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiScreenTex); |
411 | glCopyTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB, 0, 0, ScreenWidth, ScreenHeight, 0); |
413 | // STEP 2: Set up an orthogonal projection |
414 | glMatrixMode(GL_MODELVIEW); |
418 | glMatrixMode(GL_PROJECTION); |
421 | glOrtho(0, 1, 1, 0, 0.1, 100); |
423 | // STEP 3: Render the current scene to a new, lower-res texture, darkening non-bright areas of the scene |
424 | // by multiplying it with itself a few times. |
425 | glViewport(0, 0, ScreenWidth/4, ScreenHeight/4); |
427 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiScreenTex); |
429 | glBlendFunc(GL_DST_COLOR, GL_ZERO); |
433 | DrawQuad(ScreenWidth, ScreenHeight); |
437 | for (int i = 0; i < CVAR_GET_FLOAT("r_glowdark"); i++) |
438 | DrawQuad(ScreenWidth, ScreenHeight); |
440 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiGlowTex); |
441 | glCopyTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB, 0, 0, ScreenWidth/4, ScreenHeight/4, 0); |
443 | // STEP 4: Blur the now darkened scene in the horizontal direction. |
444 | float blurAlpha = 1 / (CVAR_GET_FLOAT("r_glowblur")*2 + 1); |
446 | glColor4f(1,1,1,blurAlpha); |
448 | glBlendFunc(GL_SRC_ALPHA, GL_ZERO); |
450 | DrawQuad(ScreenWidth/4, ScreenHeight/4); |
452 | glBlendFunc(GL_SRC_ALPHA, GL_ONE); |
454 | for (i = 0; i <= CVAR_GET_FLOAT("r_glowblur"); i++) { |
455 | DrawQuad(ScreenWidth/4, ScreenHeight/4, -i, 0); |
456 | DrawQuad(ScreenWidth/4, ScreenHeight/4, i, 0); |
459 | glCopyTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB, 0, 0, ScreenWidth/4, ScreenHeight/4, 0); |
461 | // STEP 5: Blur the horizontally blurred image in the vertical direction. |
462 | glBlendFunc(GL_SRC_ALPHA, GL_ZERO); |
464 | DrawQuad(ScreenWidth/4, ScreenHeight/4); |
466 | glBlendFunc(GL_SRC_ALPHA, GL_ONE); |
468 | for (i = 0; i <= CVAR_GET_FLOAT("r_glowblur"); i++) { |
469 | DrawQuad(ScreenWidth/4, ScreenHeight/4, 0, -i); |
470 | DrawQuad(ScreenWidth/4, ScreenHeight/4, 0, i); |
473 | glCopyTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB, 0, 0, ScreenWidth/4, ScreenHeight/4, 0); |
475 | // STEP 6: Combine the blur with the original image. |
476 | glViewport(0, 0, ScreenWidth, ScreenHeight); |
480 | DrawQuad(ScreenWidth/4, ScreenHeight/4); |
483 | glBlendFunc(GL_ONE, GL_ONE); |
485 | for (i = 0; i < CVAR_GET_FLOAT("r_glowstrength"); i++) { |
486 | DrawQuad(ScreenWidth/4, ScreenHeight/4); |
489 | glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiScreenTex); |
491 | DrawQuad(ScreenWidth, ScreenHeight); |
493 | // STEP 7: Restore the original projection and modelview matrices and disable rectangular textures. |
494 | glMatrixMode(GL_PROJECTION); |
497 | glMatrixMode(GL_MODELVIEW); |
500 | glDisable(GL_TEXTURE_RECTANGLE_NV); |
501 | glEnable(GL_DEPTH_TEST); |
503 | glClear(GL_DEPTH_BUFFER_BIT); |
В середине чтото коментарии както криво получились ... На самом деле в коде не так ...
Заранее благодарен ...
З.Ы. что интересное глюк проявляется не сразу ( обычно начинается с неправильного скейла в аномальных лабораториях ... И беспределом перед входом в офис ...__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено XaeroX 20-11-2007 в 18:04:
После смены уровня глюки, что ли? Или через некоторое время на том же уровне?
__________________
Отправлено FiEctro 20-11-2007 в 18:23:
>> После смены уровня глюки, что ли?
Ну да ...
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено XaeroX 20-11-2007 в 20:17:
-CJ- так эти глюки и в спирите были. Это проблема очень многих модов, использующих OpenGL-эффекты 
__________________
Отправлено FiEctro 21-11-2007 в 09:21:
XaeroX дык как это фиксить ?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено XaeroX 21-11-2007 в 10:17:
-CJ- надо избавляться от glGenTextures. Посмотри как в сорцах ксаша делается, там чтото типа GL_AllocateTextureIndex или навроде того.
__________________
Отправлено FiEctro 21-11-2007 в 10:53:
XaeroX в ксаше помоему нету глоу ...
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено XaeroX 21-11-2007 в 11:15:
-CJ- ну и что? Там текстуры создаются. Вот и посмотри, как там делается. 
__________________
Отправлено FiEctro 21-11-2007 в 11:38:
XaeroX что конкретно ?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Ku2zoff 21-11-2007 в 12:54:
Я так не разу у себя и не видел нормальный шейдерный glow. Всё смазывается и съезжает с экрана. Есть ли возможность использовать его совместно с зеркалами и мониторами без этого глюка?
Отправлено FiEctro 21-11-2007 в 13:12:
>> без этого глюка?
Без размазаваний ? Да ...
Размазывания профикшены в коде выше ...
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Ku2zoff 21-11-2007 в 13:26:
-CJ- у меня и с этого кода не пашет. Может дело в самих шейдерах?
Добавлено 21-11-2007 в 19:26:
Вот в аттаче вари ант с глоу и без него, причём на обоих скринах игрок смотрит в одну точку...
Отправлено XaeroX 21-11-2007 в 13:29:
Цитата:
-CJ- писал:
что конкретно ?
Цитата:
XaeroX писал:
надо избавляться от glGenTextures. Посмотри как в сорцах ксаша делается, там чтото типа GL_AllocateTextureIndex или навроде того
Почему по два раза писать надо-то? 
__________________
Отправлено Ku2zoff 21-11-2007 в 19:32:
>>Без размазаваний ? Да ... Размазывания профикшены в коде выше ...
Там вообще закомментирована часть кода, отвечающая за CG шейдеры и оставлен только ScreenGlowLowEnd, который и так без проблем работает, так что нифига не профикшено.
Я покопался в коде глоу и получил вот то что в аттаче. На четверть экрана работает идеально, но когда растягиваешь до полного размера - изображение искажается, понятия не имею из-за чего.
Отправлено FiEctro 22-11-2007 в 11:16:
>> Там вообще закомментирована часть кода, отвечающая за CG шейдеры и оставлен только ScreenGlowLowEnd, который и так без проблем работает, так что нифига не профикшено.
Блин я для кого писал ? Что эта большая часть закоментирована только из за глюка форума ! В студии все ОК ...
Кстати как с тобой вообще я могу связаться ? В аське тебя вообще не бывает ...
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!