SWRC-Modding / CT

C++ headers for Star Wars Republic Commando
161 stars 10 forks source link

Intel ARC OpenGL error @start #26

Closed donizettilorenzo closed 9 months ago

donizettilorenzo commented 9 months ago

Fresh build from source but I got this (no problem on NVidia hardware) using an Intel ARC A380 (lastest drivers):

https://postimg.cc/nX9d88wP

Of course I'm using OpenGL path (ARC doesn't have D3D8 support for the moment)

leon-bckl commented 9 months ago

Thanks for the report. Unfortunately I don't have an intel gpu to test this sort of stuff. But I believe the issue here is that the glDeleteTextures function is simply loaded incorrectly. Since you're able to build from source, could you please try to move that function in opengl.h from GL_FUNCS to the GL_BASE_FUNCS list and see if that fixes it?

donizettilorenzo commented 9 months ago

Doing so -> another error :/

https://i.postimg.cc/c1tMDj1Z/Senza-titolo.jpg

leon-bckl commented 9 months ago

Okay it has trouble compiling a simple shader. That doesn’t make me hopeful that it will work for the more complex ones lol. Can you check CT.log? It should contain an error message describing why this failed.

donizettilorenzo commented 9 months ago

`Log: SetRes: 2560x1440, 32-bit, Fullscreen: 1 Init: Using pixel format 2 Init: 32-bit color buffer Init: GL_VENDOR : Intel Init: GL_RENDERER : Intel(R) Arc(TM) A380 Graphics Init: GL_VERSION : 4.5.0 - Build 31.0.101.4972 Log: Shader compilation failed for LightingOnly.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for LightingOnly.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for LightingOnlyLightmap.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for LightingOnlyLightmap.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for LightingOnly2X.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for LightingOnly2X.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for LightingOnlyLightmap2X.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for LightingOnlyLightmap2X.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for Bitmap.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for Bitmap.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapStaticLighting.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapStaticLighting.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapDetail.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapDetail.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapStaticLightingDetail.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapStaticLightingDetail.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapLightmap.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapLightmap.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapLightmapStaticLighting.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapLightmapStaticLighting.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapLightmapDetail.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapLightmapDetail.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapLightmapStaticLightingDetail.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapLightmapStaticLightingDetail.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapLightmap2X.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapLightmap2X.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapLightmap2XDetail.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for BitmapLightmap2XDetail.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for Particle.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for Particle.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for ParticleTFactor.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for ParticleTFactor.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for ParticleSpecialBlend.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for ParticleSpecialBlend.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for ParticleSpecialBlendTFactor.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for ParticleSpecialBlendTFactor.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for ParticleBlendSubdivsions.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for ParticleBlendSubdivsions.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for TerrainAlphaMap.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for TerrainAlphaMap.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for TerrainAlphaMapStaticLighting.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for TerrainAlphaMapStaticLighting.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for Terrain3Layers.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for Terrain3Layers.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for Terrain4Layers.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for Terrain4Layers.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for ERRORSHADER.glsl - vertex shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Log: Shader compilation failed for ERRORSHADER.glsl - fragment shader: ERROR: 0:32: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10 ERROR: 0:33: 'struct definition cannot be embedded in a block or struct; embedding in struct' : supported only in GLSL 1.10

Critical: appError called: Critical: Assertion failed: ErrorShader.IsValid() [File:F:\Star Wars Republic Commando\Code\OpenGLDrv\Src\OpenGLRenderDevice.cpp] [Line: 571] Critical: Windows GetLastError: The operation completed successfully. (0) Exit: Executing UObject::StaticShutdownAfterError Exit: Executing UWindowsClient::ShutdownAfterError Log: Waiting for file streaming thread to finish... Exit: OpenAL Audio subsystem shut down. Critical: UOpenGLRenderDevice::SetRes Critical: UWindowsViewport::TryRenderDevice Critical: UWindowsViewport::OpenWindow Critical: UGameEngine::Init Critical: InitEngine Critical: Assertion failed: ErrorShader.IsValid() [File:F:\Star Wars Republic Commando\Code\OpenGLDrv\Src\OpenGLRenderDevice.cpp] [Line: 571]

History: UOpenGLRenderDevice::SetRes <- UWindowsViewport::TryRenderDevice <- UWindowsViewport::OpenWindow <- UGameEngine::Init <- InitEngine Exit: Exiting. Log: Waiting for file streaming thread to finish... Exit: Name subsystem shut down; usage 30550 names (31102 max), 922 KB (1028 KB alloc) Uninitialized: Log file closed, 12/06/23 09:54:53`

leon-bckl commented 9 months ago

Okay, looks like the intel driver is more strict which is a good thing. Could you try again with the latest revision and check if there are more errors?

donizettilorenzo commented 9 months ago

It's working! Only some issues with the output (inverted screenshots, pixels smearing along the tearlines of the frames queue) running RivaTuner/Afterburner/RTSS to monitor. Without it it's perfect.

Those artifacts are present in the monitor/screen output, not the screenshots (taken with Afterburner)

leon-bckl commented 9 months ago

Great, thanks for testing!

As for Afterburner: The inverted screenshots are because everything is rendered upside down and flipped at the end. This was necessary because the game was made with only direct3d in mind which uses a different texture coordinate origin than OpenGL. Apparently Afterburner takes the screenshot before the actual flip happens. Not sure about the pixel smearing but I wouldn't consider that a real issue that needs to be addressed since Afterburner hooks the graphics Api which can cause some problems (similar to steam overlay in some games).

donizettilorenzo commented 9 months ago

In fact ALT-tabbing some times makes appear the cross (editor?) and THEN the smearing disappers. It's a problem in the final stage of the presentation of the frame (and only with the hooking)

donizettilorenzo commented 9 months ago

Ah, if you ask "Why the OpenGL path?" Because ARC graphics don't support D3D8 caps in the D3D9 driver......so you must use OpenGL or a wrapper to d3d9/11/12/Vulkan

leon-bckl commented 9 months ago

The cursor thing is common. You can fix it by exiting full screen, opening the pause menu and then going back to full screen.

I’m closing this now since the issue was resolved.