Problems with PVRShaman

This topic contains 4 replies, has 2 voices, and was last updated by  Arron 5 years, 7 months ago.

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #30843

    Hi,

    I’m playing with PVRShaman. On Windows (version 1.12, SDK version 2.10) when I use built-in effects files (e.g. the existing pfx file Colours.pfx or the Basic Lighting of the effect library), I get warnings such as:

    warning: LIGHTPOSWORLD0 does not exist – using default value.   

    warning: LIGHTDIRWORLD0 does not exist – using default value.   

    I have another problem with #defines (which should be supported in GLSL as far as I know, at least the OpenGL ES 2.0 Programming Guide tells me that it is). In this example:

    [HEADER]
    [/HEADER]

    [VERTEXSHADER]
        NAME VertShader
        [GLSL_CODE]
            #define GLSLPROGRAM
            #define GLSLEND            
           
            attribute vec4  Vertex;
            uniform mat4  MVPMatrix;
           
            GLSLPROGRAM
                   
            void main()
            {
                gl_Position = MVPMatrix * Vertex;
               
            }
           
            GLSLEND
                   
        [/GLSL_CODE]
    [/VERTEXSHADER]

    [FRAGMENTSHADER]
        NAME FragShader
        [GLSL_CODE]
            void main()
            {
                gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0);
            }
        [/GLSL_CODE]
    [/FRAGMENTSHADER]

    [EFFECT]
        NAME GreenShader

        ATTRIBUTE    Vertex        POSITION
        UNIFORM        MVPMatrix        WORLDVIEWPROJECTION

        VERTEXSHADER VertShader
        FRAGMENTSHADER FragShader
    [/EFFECT]

    PVRShaman behaves strangely since it might or might not compile in the pfx editor (depending on previous changes) but it always fails when trying to “Rebuild Shaders”.
    Using

           #define GLSLPROGRAM uniform float dummy1;

           #define GLSLEND uniform float dummy2;

    would solve the problem for me, but I still think that there is a bug in the way #defines with empty replace text are handled.

    Best,

    Martin   
     

    Martin Kraus2012-04-24 10:02:12

    #35765

    Arron
    Member

    Hi Martin.

    You’ll get those warnings about lights if the POD that you’re applying the effect on doesn’t contain that specific light type (i.e point light, directional light).

    Also I can’t seem to reproduce the issue of expanding empty defines. Are you using the latest compilers provided with the 2.10 SDK?Arron2012-04-24 12:31:22

    #35766

    Hi Arron,

    OK, I just didn’t understand the error message.

    I’m using PVRShaman version 1.12 (PC Windows emulation SDK build 2.10@839132) and GLSL ES Compiler glslcompiler_sgx535.exe from from the 2.10 SDK.

    I’m doing this:
    – copying and pasting the code into a text file (.pfx) with notepad
    – starting PVRShaman
    – opening a built-in object, namely a sphere
    – adding a material, selecting to assign it to the sphere, using the existing pfx file

    The pfx editor reports success with the compiling of the vertex and fragment shader but nonetheless PVRShaman reports:

    — Loading Effects —
    PFX test2.pfx failed to compile.
    Material ‘NewMaterial1’ using effect file ‘test2.pfx’ … failed.

    If I then choose “Rebuild Shaders” or “Apply Shaders”, I still get the same error but the effects editor also fails to compile with these messages:
     
    Compile failed.
    ERROR: 0:12: ‘Vertex’ : undeclared identifier
    ERROR: Unexpected end of source found
    ERROR: gl_Position must be written by all paths through a vertex shader.
    ERROR: main() function is missing.
    ERROR: 4 compilation errors. No code generated.

    If I change the pfx file in the editor (e.g. by adding a space), it compiles again. But if I then rebuild or apply the shader to the model, it fails again. Thus, I don’t think it is a problem of the compiler but rather of PVRShaman.

    Martin Kraus2012-04-24 13:59:19

    #35767

    I just tried the same thing on MacOS X and couldn’t reproduce the problem.

    However, another problem appeared: if I have TextEdit in RTF mode and copy&paste the code into it, then “make plain text” in TextEdit and save it (as UTF-8 or Western Latin 1), then PVRShaman cannot parse the spaces. I assume the compiler is unaware of some kind of white space that results from this procedure.

    #35768

    Arron
    Member

    Hi Martin.

    Thanks – I’ll check this issue out.

    I’m not too sure regarding the RTF > Plain text conversion. PVRShaman is only ‘ASCII’ aware, so any unicode characters that may result after such a conversion will not be correctly parsed.

Viewing 5 posts - 1 through 5 (of 5 total)
You must be logged in to reply to this topic.