Arch, open source drivers, black screen

Discussion in 'Mac and Linux' started by trezoristo, November 26, 2013.

  1. trezoristo

    trezoristo New Member

    Messages:
    8
    Likes Received:
    0
    Hi there,

    I've been trying to get this to work on Arch, but so far have failed. When I start PA, I get a beautiful black screen and nothing else.

    The following obstacles I've already overcome:
    • Installed an older version of libcurl.
    • Linked libudev.
    I have an HD4870 graphics card and the latest open source drivers. My log is attached. I'm totally stuck, so any help is much appreciated!
  2. SXX

    SXX Post Master General

    Messages:
    6,896
    Likes Received:
    1,812
    So you don't see main menu? Can you please try to run game from console and then post output here?

    At this moment game log doesn't include Coherent debug output.
  3. trezoristo

    trezoristo New Member

    Messages:
    8
    Likes Received:
    0
    I'm trying to get the log here, but for some reason uploads don't seem to work, links to dropbox I'm not allowed to post and the log is to long for a single post... Give me a moment.

    I split the log in three posts. I don't really like the triple-post, but considering the way this forum works I don't see another way, sorry!

    Code:
    [20:47:34.026] INFO Log file /home/jasper/.local/Uber Entertainment/Planetary Annihilation/log/PA-20-47-34.026.txt opened
    [20:47:34.027] INFO Loaded 0 mods
    [20:47:34.056] INFO GL_VENDOR: X.Org
    [20:47:34.056] INFO GL_RENDERER: Gallium 0.4 on AMD RV770
    [20:47:34.056] INFO GL_VERSION: 3.0 Mesa 9.2.3
    [20:47:34.056] INFO GL_SHADING_LANGUAGE_VERSION: 1.30
    [20:47:34.056] INFO Gamma correct pipeline enabled.
    [20:47:34.200] ERROR Error compiling shader /shaders/prelight_material_batch.vs:
    #extension GL_EXT_gpu_shader4 : require
    #extension GL_ARB_draw_instanced : enable
    
    uniform mat4 WorldViewTransform;
    uniform mat4 WorldViewProjTransform;
    
    attribute vec3 a_Position;
    attribute vec3 a_Normal;
    attribute vec3 a_Tangent;
    attribute vec3 a_Binormal;
    attribute vec2 a_TexCoord;
    
    varying vec3 v_Normal;
    varying vec3 v_Tangent;
    varying vec3 v_Binormal;
    
    varying vec2 v_TexCoord;
    varying vec3 v_Forward;
    
    uniform sampler2D BatchTransforms;
    uniform vec4 BatchTransforms_size;
    
    mat4 getBatchTransform()
    {
        float y = (float(gl_InstanceIDARB) + 0.5) * BatchTransforms_size.w;
        return mat4(
                texture2D(BatchTransforms, vec2(0.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(1.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(2.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(3.5 * BatchTransforms_size.z, y))
        );
    }
    
    void main() {
        mat4 batchTransform = getBatchTransform();
    
        gl_Position = WorldViewProjTransform * (batchTransform * vec4(a_Position, 1));
    
        v_Normal = (WorldViewTransform * (batchTransform * vec4(a_Normal, 0))).xyz;
        v_Tangent = (WorldViewTransform * (batchTransform * vec4(a_Tangent, 0))).xyz;
        v_Binormal = (WorldViewTransform * (batchTransform * vec4(-a_Binormal, 0))).xyz;
    
        v_TexCoord = a_TexCoord;
        v_Forward = (WorldViewTransform * (batchTransform * vec4(a_Position, 1))).xyz;
    }
    0:1(12): error: extension `GL_EXT_gpu_shader4' unsupported in vertex shader
    
    [20:47:34.207] ERROR Error compiling shader /shaders/prelight_normal_batch.vs:
    #extension GL_EXT_gpu_shader4 : require
    #extension GL_ARB_draw_instanced : enable
    
    uniform mat4 WorldViewTransform;
    uniform mat4 WorldViewProjTransform;
    
    attribute vec3 a_Position;
    attribute vec3 a_Normal;
    attribute vec3 a_Tangent;
    attribute vec3 a_Binormal;
    attribute vec2 a_TexCoord;
    
    varying vec3 v_Normal;
    varying vec3 v_Tangent;
    varying vec3 v_Binormal;
    
    varying vec2 v_TexCoord;
    varying vec3 v_Forward;
    
    uniform sampler2D BatchTransforms;
    uniform vec4 BatchTransforms_size;
    
    mat4 getBatchTransform()
    {
        float y = (float(gl_InstanceIDARB) + 0.5) * BatchTransforms_size.w;
        return mat4(
                texture2D(BatchTransforms, vec2(0.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(1.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(2.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(3.5 * BatchTransforms_size.z, y))
        );
    }
    
    void main()
    {
        mat4 batchTransform = getBatchTransform();
    
        gl_Position = WorldViewProjTransform * (batchTransform * vec4(a_Position, 1));
    
        v_Normal = (WorldViewTransform * (batchTransform * vec4(a_Normal, 0))).xyz;
        v_Tangent = (WorldViewTransform * (batchTransform * vec4(a_Tangent, 0))).xyz;
        v_Binormal = (WorldViewTransform * (batchTransform * vec4(-a_Binormal, 0))).xyz;
    
        v_TexCoord = a_TexCoord;
        v_Forward = (WorldViewTransform * (batchTransform * vec4(a_Position,1))).xyz;
    }
    0:1(12): error: extension `GL_EXT_gpu_shader4' unsupported in vertex shader
    
    [20:47:34.213] ERROR Error compiling shader /shaders/prelight_flat_batch.vs:
    #extension GL_EXT_gpu_shader4 : require
    #extension GL_ARB_draw_instanced : enable
    
    uniform mat4 WorldViewTransform;
    uniform mat4 WorldViewProjTransform;
    
    attribute vec3 a_Position;
    attribute vec3 a_Normal;
    attribute vec2 a_TexCoord;
    
    varying vec3 v_Normal;
    
    varying vec2 v_TexCoord;
    
    varying vec3 v_Forward;
    
    uniform sampler2D BatchTransforms;
    uniform vec4 BatchTransforms_size;
    
    mat4 getBatchTransform()
    {
        float y = (float(gl_InstanceIDARB) + 0.5) * BatchTransforms_size.w;
        return mat4(
                texture2D(BatchTransforms, vec2(0.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(1.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(2.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(3.5 * BatchTransforms_size.z, y))
        );
    }
    
    void main() {
        mat4 batchTransform = getBatchTransform();
    
        gl_Position = WorldViewProjTransform * (batchTransform * vec4(a_Position, 1));
    
        v_Normal = (WorldViewTransform * (batchTransform * vec4(a_Normal, 0))).xyz;
    
        v_TexCoord = a_TexCoord;
        v_Forward = (WorldViewTransform * (batchTransform * vec4(a_Position, 1))).xyz;
    }
    0:1(12): error: extension `GL_EXT_gpu_shader4' unsupported in vertex shader
    
    [20:47:34.219] ERROR Error compiling shader /shaders/prelight_vertex_color_batch.vs:
    #extension GL_EXT_gpu_shader4 : require
    #extension GL_ARB_draw_instanced : enable
    
    uniform mat4 WorldViewTransform;
    uniform mat4 WorldViewProjTransform;
    
    attribute vec3 a_Position;
    attribute vec3 a_Normal;
    attribute vec4 a_Color;
    attribute vec3 a_Tangent;
    attribute vec3 a_Binormal;
    attribute vec2 a_TexCoord1;
    
    varying vec3 v_Normal;
    varying vec3 v_Tangent;
    varying vec3 v_Binormal;
    
    varying vec4 v_Color;
    
    varying vec2 v_TexCoord;
    varying vec3 v_Forward;
    
    uniform sampler2D BatchTransforms;
    uniform vec4 BatchTransforms_size;
    
    mat4 getBatchTransform()
    {
        float y = (float(gl_InstanceIDARB) + 0.5) * BatchTransforms_size.w;
        return mat4(
                texture2D(BatchTransforms, vec2(0.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(1.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(2.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(3.5 * BatchTransforms_size.z, y))
        );
    }
    
    void main() {
        mat4 batchTransform = getBatchTransform();
    
        gl_Position = WorldViewProjTransform * (batchTransform * vec4(a_Position, 1));
    
        v_Normal = (WorldViewTransform * (batchTransform * vec4(a_Normal, 0))).xyz;
        v_Tangent = (WorldViewTransform * (batchTransform * vec4(a_Tangent, 0))).xyz;
        v_Binormal = (WorldViewTransform * (batchTransform * vec4(-a_Binormal, 0))).xyz;
    
        v_TexCoord.xy = a_TexCoord1;
        v_Forward = (WorldViewTransform * (batchTransform * vec4(a_Position, 1))).xyz;
        v_Color = a_Color;
    }
    0:1(12): error: extension `GL_EXT_gpu_shader4' unsupported in vertex shader
    
    [20:47:34.372] ERROR Error compiling shader /shaders/prelight_flat_batch.vs:
    #extension GL_EXT_gpu_shader4 : require
    #extension GL_ARB_draw_instanced : enable
    
    uniform mat4 WorldViewTransform;
    uniform mat4 WorldViewProjTransform;
    
    attribute vec3 a_Position;
    attribute vec3 a_Normal;
    attribute vec2 a_TexCoord;
    
    varying vec3 v_Normal;
    
    varying vec2 v_TexCoord;
    
    varying vec3 v_Forward;
    
    uniform sampler2D BatchTransforms;
    uniform vec4 BatchTransforms_size;
    
    mat4 getBatchTransform()
    {
        float y = (float(gl_InstanceIDARB) + 0.5) * BatchTransforms_size.w;
        return mat4(
                texture2D(BatchTransforms, vec2(0.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(1.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(2.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(3.5 * BatchTransforms_size.z, y))
        );
    }
    
    void main() {
        mat4 batchTransform = getBatchTransform();
    
        gl_Position = WorldViewProjTransform * (batchTransform * vec4(a_Position, 1));
    
        v_Normal = (WorldViewTransform * (batchTransform * vec4(a_Normal, 0))).xyz;
    
        v_TexCoord = a_TexCoord;
        v_Forward = (WorldViewTransform * (batchTransform * vec4(a_Position, 1))).xyz;
    }
    0:1(12): error: extension `GL_EXT_gpu_shader4' unsupported in vertex shader
    
    [20:47:34.443] ERROR Error compiling shader /shaders/prelight_vertex_color_batch.vs:
    #extension GL_EXT_gpu_shader4 : require
    #extension GL_ARB_draw_instanced : enable
    
    uniform mat4 WorldViewTransform;
    uniform mat4 WorldViewProjTransform;
    
    Last edited: November 26, 2013
  4. trezoristo

    trezoristo New Member

    Messages:
    8
    Likes Received:
    0
    Code:
    attribute vec3 a_Position;
    attribute vec3 a_Normal;
    attribute vec4 a_Color;
    attribute vec3 a_Tangent;
    attribute vec3 a_Binormal;
    attribute vec2 a_TexCoord1;
    
    varying vec3 v_Normal;
    varying vec3 v_Tangent;
    varying vec3 v_Binormal;
    
    varying vec4 v_Color;
    
    varying vec2 v_TexCoord;
    varying vec3 v_Forward;
    
    uniform sampler2D BatchTransforms;
    uniform vec4 BatchTransforms_size;
    
    mat4 getBatchTransform()
    {
        float y = (float(gl_InstanceIDARB) + 0.5) * BatchTransforms_size.w;
        return mat4(
                texture2D(BatchTransforms, vec2(0.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(1.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(2.5 * BatchTransforms_size.z, y)),
                texture2D(BatchTransforms, vec2(3.5 * BatchTransforms_size.z, y))
        );
    }
    
    void main() {
        mat4 batchTransform = getBatchTransform();
    
        gl_Position = WorldViewProjTransform * (batchTransform * vec4(a_Position, 1));
    
        v_Normal = (WorldViewTransform * (batchTransform * vec4(a_Normal, 0))).xyz;
        v_Tangent = (WorldViewTransform * (batchTransform * vec4(a_Tangent, 0))).xyz;
        v_Binormal = (WorldViewTransform * (batchTransform * vec4(-a_Binormal, 0))).xyz;
    
        v_TexCoord.xy = a_TexCoord1;
        v_Forward = (WorldViewTransform * (batchTransform * vec4(a_Position, 1))).xyz;
        v_Color = a_Color;
    }
    0:1(12): error: extension `GL_EXT_gpu_shader4' unsupported in vertex shader
    
    [20:47:35.713] ERROR Error compiling shader /shaders/post_fxaa.fs:
    #version 120
    #extension GL_EXT_gpu_shader4 : enable
    
    #ifdef GL_ES
    precision mediump float;
    #endif
    
    uniform sampler2D PostSourceTexture;
    uniform vec4 PostSourceTexture_size;
    varying vec2 v_TexCoord;
    varying vec4 v_Color;
    
    #define FXAA_GLSL_120
    
    #define int2 ivec2
    #define float2 vec2
    #define float3 vec3
    #define float4 vec4
    #define FxaaBool3 bvec3
    #define FxaaInt2 ivec2
    #define FxaaFloat2 vec2
    #define FxaaFloat3 vec3
    #define FxaaFloat4 vec4
    #define FxaaBool2Float(a) mix(0.0, 1.0, (a))
    #define FxaaPow3(x, y) pow(x, y)
    #define FxaaSel3(f, t, b) mix((f), (t), (b))
    #define FxaaTex sampler2D
    
    #define FxaaToFloat3(a) FxaaFloat3((a), (a), (a))
    
    #define FXAA_EDGE_THRESHOLD      (1.0/8.0)
    #define FXAA_EDGE_THRESHOLD_MIN  (1.0/24.0)
    #define FXAA_SEARCH_STEPS        16
    #define FXAA_SEARCH_ACCELERATION 1
    #define FXAA_SEARCH_THRESHOLD    (1.0/4.0)
    #define FXAA_SUBPIX              1
    #define FXAA_SUBPIX_FASTER       0
    #define FXAA_SUBPIX_CAP          (3.0/4.0)
    #define FXAA_SUBPIX_TRIM         (1.0/4.0)
    #define FXAA_SUBPIX_TRIM_SCALE (1.0/(1.0 - FXAA_SUBPIX_TRIM))
    
    float4 FxaaTexLod0(FxaaTex tex, float2 pos)
    {
        return texture2DLod(tex, pos.xy, 0.0);
    }
    
    float4 FxaaTexGrad(FxaaTex tex, float2 pos, float2 grad)
    {
        return texture2DGrad(tex, pos.xy, grad, grad);
    }
    
    float4 FxaaTexOff(FxaaTex tex, float2 pos, int2 off, float2 rcpFrame)
    {
        //return texture2DLodOffset(tex, pos.xy, 0.0, off.xy);
        return texture2D(tex, pos.xy + vec2(off) * rcpFrame);
    }
    
    float FxaaLuma(float3 rgb)
    {
        return rgb.y * (0.587/0.299) + rgb.x;
    }
    
    float3 FxaaLerp3(float3 a, float3 b, float amountOfA)
    {
        return (FxaaToFloat3(-amountOfA) * b) + ((a * FxaaToFloat3(amountOfA)) + b);
    }
    
    float3 FxaaFilterReturn(float3 rgb)
    {
        // Do sRGB encoded value to linear conversion.
        return rgb;
    }
    
    float4 fxaa(vec2 pos, sampler2D tex, vec2 rcpFrame)
    {
        float3 rgbN = FxaaTexOff(tex, pos.xy, FxaaInt2( 0,-1), rcpFrame).xyz;
        float3 rgbW = FxaaTexOff(tex, pos.xy, FxaaInt2(-1, 0), rcpFrame).xyz;
        float4 rgbMA = FxaaTexOff(tex, pos.xy, FxaaInt2( 0, 0), rcpFrame).xyzw;
        float3 rgbM = rgbMA.xyz;
        float alpha = rgbMA.w;
        float3 rgbE = FxaaTexOff(tex, pos.xy, FxaaInt2( 1, 0), rcpFrame).xyz;
        float3 rgbS = FxaaTexOff(tex, pos.xy, FxaaInt2( 0, 1), rcpFrame).xyz;
        float lumaN = FxaaLuma(rgbN);
        float lumaW = FxaaLuma(rgbW);
        float lumaM = FxaaLuma(rgbM);
        float lumaE = FxaaLuma(rgbE);
        float lumaS = FxaaLuma(rgbS);
        float rangeMin = min(lumaM, min(min(lumaN, lumaW), min(lumaS, lumaE)));
        float rangeMax = max(lumaM, max(max(lumaN, lumaW), max(lumaS, lumaE)));
        float range = rangeMax - rangeMin;
    
        if(range < max(FXAA_EDGE_THRESHOLD_MIN, rangeMax * FXAA_EDGE_THRESHOLD))
        {
            return vec4(FxaaFilterReturn(rgbM), alpha);
        }
    
        float3 rgbL = rgbN + rgbW + rgbM + rgbE + rgbS;
    
        float lumaL = (lumaN + lumaW + lumaE + lumaS) * 0.25;
        float rangeL = abs(lumaL - lumaM);
    
        float blendL = max(0.0,
            (rangeL / range) - FXAA_SUBPIX_TRIM) * FXAA_SUBPIX_TRIM_SCALE;
        blendL = min(FXAA_SUBPIX_CAP, blendL);
    
        float3 rgbNW = FxaaTexOff(tex, pos.xy, FxaaInt2(-1,-1), rcpFrame).xyz;
        float3 rgbNE = FxaaTexOff(tex, pos.xy, FxaaInt2( 1,-1), rcpFrame).xyz;
        float3 rgbSW = FxaaTexOff(tex, pos.xy, FxaaInt2(-1, 1), rcpFrame).xyz;
        float3 rgbSE = FxaaTexOff(tex, pos.xy, FxaaInt2( 1, 1), rcpFrame).xyz;
    
        rgbL += (rgbNW + rgbNE + rgbSW + rgbSE);
        rgbL *= FxaaToFloat3(1.0/9.0);
    
        float lumaNW = FxaaLuma(rgbNW);
        float lumaNE = FxaaLuma(rgbNE);
        float lumaSW = FxaaLuma(rgbSW);
        float lumaSE = FxaaLuma(rgbSE);
    
        float edgeVert =
            abs((0.25 * lumaNW) + (-0.5 * lumaN) + (0.25 * lumaNE)) +
            abs((0.50 * lumaW ) + (-1.0 * lumaM) + (0.50 * lumaE )) +
            abs((0.25 * lumaSW) + (-0.5 * lumaS) + (0.25 * lumaSE));
    
        float edgeHorz =
            abs((0.25 * lumaNW) + (-0.5 * lumaW) + (0.25 * lumaSW)) +
            abs((0.50 * lumaN ) + (-1.0 * lumaM) + (0.50 * lumaS )) +
            abs((0.25 * lumaNE) + (-0.5 * lumaE) + (0.25 * lumaSE));
    
        bool horzSpan = edgeHorz >= edgeVert;
    
        float lengthSign = horzSpan ? -rcpFrame.y : -rcpFrame.x;
        if(!horzSpan)
            lumaN = lumaW;
        if(!horzSpan)
            lumaS = lumaE;
    
        float gradientN = abs(lumaN - lumaM);
        float gradientS = abs(lumaS - lumaM);
        lumaN = (lumaN + lumaM) * 0.5;
        lumaS = (lumaS + lumaM) * 0.5;
    
        bool pairN = gradientN >= gradientS;
    
        if(!pairN)
            lumaN = lumaS;
        if(!pairN)
            gradientN = gradientS;
        if(!pairN)
            lengthSign *= -1.0;
    
        float2 posN;
        posN.x = pos.x + (horzSpan ? 0.0 : lengthSign * 0.5);
        posN.y = pos.y + (horzSpan ? lengthSign * 0.5 : 0.0);
    
        gradientN *= FXAA_SEARCH_THRESHOLD;
    
        float2 posP = posN;
        float2 offNP = horzSpan ?
            FxaaFloat2(rcpFrame.x, 0.0) :
            FxaaFloat2(0.0f, rcpFrame.y);
    
        float lumaEndN = lumaN;
        float lumaEndP = lumaN;
        bool doneN = false;
        bool doneP = false;
    
        posN += offNP * FxaaFloat2(-1.0, -1.0);
        posP += offNP * FxaaFloat2( 1.0,  1.0);
    
        for(int i = 0; i < FXAA_SEARCH_STEPS; i++)
        {
            if (!doneN)
                lumaEndN = FxaaLuma(FxaaTexLod0(tex, posN.xy).xyz);
            if (!doneP)
                lumaEndP = FxaaLuma(FxaaTexLod0(tex, posP.xy).xyz);
    
            doneN = doneN || (abs(lumaEndN - lumaN) >= gradientN);
            doneP = doneP || (abs(lumaEndP - lumaN) >= gradientN);
    
            if (doneN && doneP)
                break;
            if (!doneN)
                posN -= offNP;
            if (!doneP)
                posP += offNP;
        }
    
        float dstN = horzSpan ? pos.x - posN.x : pos.y - posN.y;
        float dstP = horzSpan ? posP.x - pos.x : posP.y - pos.y;
        bool directionN = dstN < dstP;
    
        lumaEndN = directionN ? lumaEndN : lumaEndP;
    
        if (((lumaM - lumaN) < 0.0) == ((lumaEndN - lumaN) < 0.0))
            lengthSign = 0.0;
    
        float spanLength = (dstP + dstN);
        dstN = directionN ? dstN : dstP;
        float subPixelOffset = (0.5 + (dstN * (-1.0/spanLength))) * lengthSign;
    
        float3 rgbF = FxaaTexLod0(tex, FxaaFloat2(
            pos.x + (horzSpan ? 0.0 : subPixelOffset),
            pos.y + (horzSpan ? subPixelOffset : 0.0))).xyz;
    
        return vec4(FxaaFilterReturn(rgbF), alpha);
    }
    
    
  5. trezoristo

    trezoristo New Member

    Messages:
    8
    Likes Received:
    0
    Code:
    void main()
    {
        gl_FragColor = fxaa(v_TexCoord, PostSourceTexture, PostSourceTexture_size.zw);
    }
    0:2(12): warning: extension `GL_EXT_gpu_shader4' unsupported in fragment shader
    0:0(0): error: no matching function for call to `texture2DLod(sampler2D, vec2, float)'
    0:44(39): error: `return' with wrong type error, in function `FxaaTexLod0' returning vec4
    0:0(0): error: no matching function for call to `texture2DGrad(sampler2D, vec2, vec2, vec2)'
    0:49(47): error: `return' with wrong type error, in function `FxaaTexGrad' returning vec4
    
    [20:47:35.719] ERROR Error compiling shader /shaders/post_fxaa.fs:
    #version 120
    #extension GL_EXT_gpu_shader4 : enable
    
    #ifdef GL_ES
    precision mediump float;
    #endif
    
    uniform sampler2D PostSourceTexture;
    uniform vec4 PostSourceTexture_size;
    varying vec2 v_TexCoord;
    varying vec4 v_Color;
    
    #define FXAA_GLSL_120
    
    #define int2 ivec2
    #define float2 vec2
    #define float3 vec3
    #define float4 vec4
    #define FxaaBool3 bvec3
    #define FxaaInt2 ivec2
    #define FxaaFloat2 vec2
    #define FxaaFloat3 vec3
    #define FxaaFloat4 vec4
    #define FxaaBool2Float(a) mix(0.0, 1.0, (a))
    #define FxaaPow3(x, y) pow(x, y)
    #define FxaaSel3(f, t, b) mix((f), (t), (b))
    #define FxaaTex sampler2D
    
    #define FxaaToFloat3(a) FxaaFloat3((a), (a), (a))
    
    #define FXAA_EDGE_THRESHOLD      (1.0/8.0)
    #define FXAA_EDGE_THRESHOLD_MIN  (1.0/24.0)
    #define FXAA_SEARCH_STEPS        16
    #define FXAA_SEARCH_ACCELERATION 1
    #define FXAA_SEARCH_THRESHOLD    (1.0/4.0)
    #define FXAA_SUBPIX              1
    #define FXAA_SUBPIX_FASTER       0
    #define FXAA_SUBPIX_CAP          (3.0/4.0)
    #define FXAA_SUBPIX_TRIM         (1.0/4.0)
    #define FXAA_SUBPIX_TRIM_SCALE (1.0/(1.0 - FXAA_SUBPIX_TRIM))
    
    float4 FxaaTexLod0(FxaaTex tex, float2 pos)
    {
        return texture2DLod(tex, pos.xy, 0.0);
    }
    
    float4 FxaaTexGrad(FxaaTex tex, float2 pos, float2 grad)
    {
        return texture2DGrad(tex, pos.xy, grad, grad);
    }
    
    float4 FxaaTexOff(FxaaTex tex, float2 pos, int2 off, float2 rcpFrame)
    {
        //return texture2DLodOffset(tex, pos.xy, 0.0, off.xy);
        return texture2D(tex, pos.xy + vec2(off) * rcpFrame);
    }
    
    float FxaaLuma(float3 rgb)
    {
        return rgb.y * (0.587/0.299) + rgb.x;
    }
    
    float3 FxaaLerp3(float3 a, float3 b, float amountOfA)
    {
        return (FxaaToFloat3(-amountOfA) * b) + ((a * FxaaToFloat3(amountOfA)) + b);
    }
    
    float3 FxaaFilterReturn(float3 rgb)
    {
        // Do sRGB encoded value to linear conversion.
        return rgb;
    }
    
    float4 fxaa(vec2 pos, sampler2D tex, vec2 rcpFrame)
    {
        float3 rgbN = FxaaTexOff(tex, pos.xy, FxaaInt2( 0,-1), rcpFrame).xyz;
        float3 rgbW = FxaaTexOff(tex, pos.xy, FxaaInt2(-1, 0), rcpFrame).xyz;
        float4 rgbMA = FxaaTexOff(tex, pos.xy, FxaaInt2( 0, 0), rcpFrame).xyzw;
        float3 rgbM = rgbMA.xyz;
        float alpha = rgbMA.w;
        float3 rgbE = FxaaTexOff(tex, pos.xy, FxaaInt2( 1, 0), rcpFrame).xyz;
        float3 rgbS = FxaaTexOff(tex, pos.xy, FxaaInt2( 0, 1), rcpFrame).xyz;
        float lumaN = FxaaLuma(rgbN);
        float lumaW = FxaaLuma(rgbW);
        float lumaM = FxaaLuma(rgbM);
        float lumaE = FxaaLuma(rgbE);
        float lumaS = FxaaLuma(rgbS);
        float rangeMin = min(lumaM, min(min(lumaN, lumaW), min(lumaS, lumaE)));
        float rangeMax = max(lumaM, max(max(lumaN, lumaW), max(lumaS, lumaE)));
        float range = rangeMax - rangeMin;
    
        if(range < max(FXAA_EDGE_THRESHOLD_MIN, rangeMax * FXAA_EDGE_THRESHOLD))
        {
            return vec4(FxaaFilterReturn(rgbM), alpha);
        }
    
        float3 rgbL = rgbN + rgbW + rgbM + rgbE + rgbS;
    
        float lumaL = (lumaN + lumaW + lumaE + lumaS) * 0.25;
        float rangeL = abs(lumaL - lumaM);
    
        float blendL = max(0.0,
            (rangeL / range) - FXAA_SUBPIX_TRIM) * FXAA_SUBPIX_TRIM_SCALE;
        blendL = min(FXAA_SUBPIX_CAP, blendL);
    
        float3 rgbNW = FxaaTexOff(tex, pos.xy, FxaaInt2(-1,-1), rcpFrame).xyz;
        float3 rgbNE = FxaaTexOff(tex, pos.xy, FxaaInt2( 1,-1), rcpFrame).xyz;
        float3 rgbSW = FxaaTexOff(tex, pos.xy, FxaaInt2(-1, 1), rcpFrame).xyz;
        float3 rgbSE = FxaaTexOff(tex, pos.xy, FxaaInt2( 1, 1), rcpFrame).xyz;
    
        rgbL += (rgbNW + rgbNE + rgbSW + rgbSE);
        rgbL *= FxaaToFloat3(1.0/9.0);
    
        float lumaNW = FxaaLuma(rgbNW);
        float lumaNE = FxaaLuma(rgbNE);
        float lumaSW = FxaaLuma(rgbSW);
        float lumaSE = FxaaLuma(rgbSE);
    
        float edgeVert =
            abs((0.25 * lumaNW) + (-0.5 * lumaN) + (0.25 * lumaNE)) +
            abs((0.50 * lumaW ) + (-1.0 * lumaM) + (0.50 * lumaE )) +
            abs((0.25 * lumaSW) + (-0.5 * lumaS) + (0.25 * lumaSE));
    
        float edgeHorz =
            abs((0.25 * lumaNW) + (-0.5 * lumaW) + (0.25 * lumaSW)) +
            abs((0.50 * lumaN ) + (-1.0 * lumaM) + (0.50 * lumaS )) +
            abs((0.25 * lumaNE) + (-0.5 * lumaE) + (0.25 * lumaSE));
    
        bool horzSpan = edgeHorz >= edgeVert;
    
        float lengthSign = horzSpan ? -rcpFrame.y : -rcpFrame.x;
        if(!horzSpan)
            lumaN = lumaW;
        if(!horzSpan)
            lumaS = lumaE;
    
        float gradientN = abs(lumaN - lumaM);
        float gradientS = abs(lumaS - lumaM);
        lumaN = (lumaN + lumaM) * 0.5;
        lumaS = (lumaS + lumaM) * 0.5;
    
        bool pairN = gradientN >= gradientS;
    
        if(!pairN)
            lumaN = lumaS;
        if(!pairN)
            gradientN = gradientS;
        if(!pairN)
            lengthSign *= -1.0;
    
        float2 posN;
        posN.x = pos.x + (horzSpan ? 0.0 : lengthSign * 0.5);
        posN.y = pos.y + (horzSpan ? lengthSign * 0.5 : 0.0);
    
        gradientN *= FXAA_SEARCH_THRESHOLD;
    
        float2 posP = posN;
        float2 offNP = horzSpan ?
            FxaaFloat2(rcpFrame.x, 0.0) :
            FxaaFloat2(0.0f, rcpFrame.y);
    
        float lumaEndN = lumaN;
        float lumaEndP = lumaN;
        bool doneN = false;
        bool doneP = false;
    
        posN += offNP * FxaaFloat2(-1.0, -1.0);
        posP += offNP * FxaaFloat2( 1.0,  1.0);
    
        for(int i = 0; i < FXAA_SEARCH_STEPS; i++)
        {
            if (!doneN)
                lumaEndN = FxaaLuma(FxaaTexLod0(tex, posN.xy).xyz);
            if (!doneP)
                lumaEndP = FxaaLuma(FxaaTexLod0(tex, posP.xy).xyz);
    
            doneN = doneN || (abs(lumaEndN - lumaN) >= gradientN);
            doneP = doneP || (abs(lumaEndP - lumaN) >= gradientN);
    
            if (doneN && doneP)
                break;
            if (!doneN)
                posN -= offNP;
            if (!doneP)
                posP += offNP;
        }
    
        float dstN = horzSpan ? pos.x - posN.x : pos.y - posN.y;
        float dstP = horzSpan ? posP.x - pos.x : posP.y - pos.y;
        bool directionN = dstN < dstP;
    
        lumaEndN = directionN ? lumaEndN : lumaEndP;
    
        if (((lumaM - lumaN) < 0.0) == ((lumaEndN - lumaN) < 0.0))
            lengthSign = 0.0;
    
        float spanLength = (dstP + dstN);
        dstN = directionN ? dstN : dstP;
        float subPixelOffset = (0.5 + (dstN * (-1.0/spanLength))) * lengthSign;
    
        float3 rgbF = FxaaTexLod0(tex, FxaaFloat2(
            pos.x + (horzSpan ? 0.0 : subPixelOffset),
            pos.y + (horzSpan ? subPixelOffset : 0.0))).xyz;
    
        return vec4(FxaaFilterReturn(rgbF), alpha);
    }
    
    void main()
    {
        gl_FragColor = fxaa(v_TexCoord, PostSourceTexture, PostSourceTexture_size.zw);
    }
    0:2(12): warning: extension `GL_EXT_gpu_shader4' unsupported in fragment shader
    0:0(0): error: no matching function for call to `texture2DLod(sampler2D, vec2, float)'
    0:44(39): error: `return' with wrong type error, in function `FxaaTexLod0' returning vec4
    0:0(0): error: no matching function for call to `texture2DGrad(sampler2D, vec2, vec2, vec2)'
    0:49(47): error: `return' with wrong type error, in function `FxaaTexGrad' returning vec4
    
    [20:47:35.895] INFO Configure, 958 by 1179
    [20:47:35.898] INFO build version 57449
    [20:47:35.898] INFO Coherent content root: "coui://ui/"
    [20:47:35.898] INFO Coherent host dir: "/home/jasper/tmp/builds/pa/PA/host"
    [20:47:35.898] INFO Coherent local store: "/home/jasper/.local/Uber Entertainment/Planetary Annihilation/localstore"
    [20:47:35.980] ERROR multiple models in spec for Air Factory have nav structures, this is unexpected.
    [20:47:35.985] ERROR multiple models in spec for Advanced Air Factory have nav structures, this is unexpected.
    [20:47:35.989] ERROR /pa/units/air/bomber_torpedo/bomber_torpedo.papa: open failed
    [20:47:36.107] INFO {{FMOD}} fmod buffer size 5
    [20:47:36.190] INFO Setting graphics to high
    
  6. SXX

    SXX Post Master General

    Messages:
    6,896
    Likes Received:
    1,812
    You can post link fine if you replace "http://", "www." and "." with something else.

    PS: You can as well remove shader compilation errors from log, they're not related to black screen in menu.
  7. SXX

    SXX Post Master General

    Messages:
    6,896
    Likes Received:
    1,812
    Also you can try to run PA executable with this parameters:
    Code:
    ./PA --coherent-log-level=TRACE --log-threshold=4
    Then much more info will be included in log.
  8. trezoristo

    trezoristo New Member

    Messages:
    8
    Likes Received:
    0
    I ran it with the longer log, there is three additional lines in there that don't seem that interesting.

    I uploaded the new log to dropbox, which I still can't post even if I obfuscate the link beyond recognition. That software is good, and annoying.

    And to answer your first question: Nope, no menu. Just a black window.
  9. SXX

    SXX Post Master General

    Messages:
    6,896
    Likes Received:
    1,812
    Yep this is very annoying, still after 5 message it's probably disabled already.
  10. trezoristo

    trezoristo New Member

    Messages:
    8
    Likes Received:
    0
  11. SXX

    SXX Post Master General

    Messages:
    6,896
    Likes Received:
    1,812
    Can you try to run it with launch options?

    Also can you please try to run PA and then check output of "ps aux | grep Coherent". I just wonder if you have some Coherent crash or just strange issue with VSync.

    PS: I run PA on R600g myself, so it's pretty interesting why it's not work for you.
  12. trezoristo

    trezoristo New Member

    Messages:
    8
    Likes Received:
    0
    So I'm continuing where I left yesterday.

    Anway, the last log was already using the launch options, I believe. To be sure, here is a new one:
    https://www.dropbox.com/s/jivd71moxuls2pz/PA-19-58-56.540.txt

    When starting the game, while looking at my black screen, there is no process called coherent (did a case insensitive search) running.

    Thanks for your help so far!
  13. SXX

    SXX Post Master General

    Messages:
    6,896
    Likes Received:
    1,812
    It's mean you still have some problems with Coherent. You need to find out why it's fail to start.

    You can play a bit with "/host/CoherentUI_Host" script and check what might cause that.
  14. trezoristo

    trezoristo New Member

    Messages:
    8
    Likes Received:
    0
    I don't know what did it, but I downloaded a newer version today and installed it using a PKGBUILD from the AUR and it works! Now I just have a weird mouse cursor, but I saw plenty of other threads about that around. Thanks for all your help!
  15. SXX

    SXX Post Master General

    Messages:
    6,896
    Likes Received:
    1,812
    You can check this topic for fix:
    https://forums.uberent.com/threads/...tu-12-04-13-04-13-10.53019/page-2#post-814965

    There also fix for broken shaders and FXAA:
    https://forums.uberent.com/threads/...nux-mesa-and-intel-hd-on-windows-57703.54239/

    Also you can try fixed sun shader for R600g here:
    https://forums.uberent.com/threads/linux-foss-drivers-issues-and-fixes.51007/#post-779846
    But I'm not yet totally sure if this works with 57703.
    Trelotrino likes this.

Share This Page