Changeset 1097


Ignore:
Timestamp:
Nov 30, 2011, 2:43:25 AM (9 years ago)
Author:
sam
Message:

ps3: start implementing the PS3 threading system, and port the new
Mandelbrot shader code to Cg.

Location:
trunk
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/Makefile.am

    r1094 r1097  
    5656if HAVE_PS3
    5757ps3_sources =  \
     58    platform/ps3/threadbase.h \
    5859    platform/ps3/ps3app.cpp platform/ps3/ps3app.h \
    5960    platform/ps3/ps3input.cpp platform/ps3/ps3input.h
  • trunk/test/math/remez-solver.h

    r1091 r1097  
    142142    void FindExtrema()
    143143    {
     144        using std::printf;
     145
    144146        /* Find ORDER + 2 extrema of the error function. We need to
    145147         * compute the relative error, since its extrema are at slightly
  • trunk/test/tutorial/tut03.cpp

    r1092 r1097  
    488488                ""
    489489                "uniform vec4 u_TexelSize;"
    490                 "uniform sampler2D in_Texture;"
     490                "uniform sampler2D u_Texture;"
    491491                ""
    492492                "varying vec4 v_CenterX, v_CenterY, v_IndexX, v_IndexY;"
     
    546546                "\n#endif\n"
    547547                     /* Nearest neighbour */
    548                 "    gl_FragColor = texture2D(in_Texture, ret.xy);"
     548                "    gl_FragColor = texture2D(u_Texture, ret.xy);"
    549549#else
    550550                     /* Alternate version: some kind of linear interpolation */
    551                 "    vec4 p0 = texture2D(in_Texture, vec2(rx.x, ry.x));"
    552                 "    vec4 p1 = texture2D(in_Texture, vec2(rx.y, ry.y));"
    553                 "    vec4 p2 = texture2D(in_Texture, vec2(rx.z, ry.z));"
    554                 "    vec4 p3 = texture2D(in_Texture, vec2(rx.w, ry.w));"
     551                "    vec4 p0 = texture2D(u_Texture, vec2(rx.x, ry.x));"
     552                "    vec4 p1 = texture2D(u_Texture, vec2(rx.y, ry.y));"
     553                "    vec4 p2 = texture2D(u_Texture, vec2(rx.z, ry.z));"
     554                "    vec4 p3 = texture2D(u_Texture, vec2(rx.w, ry.w));"
    555555                "    gl_FragColor = 1.0 / (dd.x + dd.y + dd.z + dd.w)"
    556556                "          * (dd.x * p0 + dd.y * p1 + dd.z * p2 + dd.w * p3);"
     
    558558                "}"
    559559#else
    560                 "void main(float4 in_Position : POSITION,"
     560                "void main(float4 a_Vertex : POSITION,"
    561561                "          float2 a_TexCoord : TEXCOORD0,"
     562                "          uniform float4x4 u_ZoomSettings,"
     563                "          uniform float4 u_TexelSize,"
     564                "          uniform float4 u_ScreenSize,"
    562565                "          out float4 out_Position : POSITION,"
    563                 "          out float2 out_TexCoord : TEXCOORD0)"
     566                "          out float4 v_CenterX,"
     567                "          out float4 v_CenterY,"
     568                "          out float4 v_IndexX,"
     569                "          out float4 v_IndexY)"
    564570                "{"
    565                 "    out_TexCoord = a_TexCoord;"
    566                 "    out_Position = in_Position;"
     571                "    out_Position = a_Vertex;"
     572                "    float4 offsets = float4(0.5, -0.5, 0.015625, -0.015625);"
     573                "    float4 zoomscale = float4(u_ZoomSettings[2][0],"
     574                "                              u_ZoomSettings[2][1],"
     575                "                              u_ZoomSettings[2][2],"
     576                "                              u_ZoomSettings[2][3]);"
     577                "    float4 zoomtx = float4(u_ZoomSettings[0][0],"
     578                "                           u_ZoomSettings[0][1],"
     579                "                           u_ZoomSettings[0][2],"
     580                "                           u_ZoomSettings[0][3]);"
     581                "    float4 zoomty = float4(u_ZoomSettings[1][0],"
     582                "                           u_ZoomSettings[1][1],"
     583                "                           u_ZoomSettings[1][2],"
     584                "                           u_ZoomSettings[1][3]);"
     585                "    v_CenterX = zoomscale * a_TexCoord.x + zoomtx"
     586                "              + offsets.xyxy * u_TexelSize.x;"
     587                "    v_CenterY = zoomscale * a_TexCoord.y - zoomty"
     588                "              + offsets.xyyx * u_TexelSize.y;"
     589                "    v_IndexX = v_CenterX * u_ScreenSize.z - (offsets.zwzw + float4(0.001, 0.002, 0.003, 0.004));"
     590                "    v_IndexY = v_CenterY * u_ScreenSize.w - (offsets.zwwz + float4(0.0015, 0.0025, 0.0035, 0.0045));"
    567591                "}",
    568592
    569                 "float3 nearest0(float2 p, float4 u_TexelSize)"
    570                 "{"
    571                 "    float2 q = p + 0.5 * u_TexelSize.xy;"
    572                 "    q -= fmod(q, 2.0 * u_TexelSize.xy);"
    573                 "    q += 0.5 * u_TexelSize.xy;"
    574                 "    return float3(q * float2(1.0, 0.25),"
    575                 "                  length(q - p));"
    576                 "}"
    577                 ""
    578                 "float3 nearest1(float2 p, float4 u_TexelSize)"
    579                 "{"
    580                 "    float2 q = p - 0.5 * u_TexelSize.xy;"
    581                 "    q -= fmod(q, 2.0 * u_TexelSize.xy);"
    582                 "    q += 1.5 * u_TexelSize.xy;"
    583                 "    return float3(q * float2(1.0, 0.25) + float2(0.0, 0.25),"
    584                 "                  length(q - p));"
    585                 "}"
    586                 ""
    587                 "float3 nearest2(float2 p, float4 u_TexelSize)"
    588                 "{"
    589                 "    float2 q = p + float2(0.5, -0.5) * u_TexelSize.xy;"
    590                 "    q -= fmod(q, 2.0 * u_TexelSize.xy);"
    591                 "    q += float2(0.5, 1.5) * u_TexelSize.xy;"
    592                 "    return float3(q * float2(1.0, 0.25) + float2(0.0, 0.50),"
    593                 "                  length(q - p));"
    594                 "}"
    595                 ""
    596                 "float3 nearest3(float2 p, float4 u_TexelSize)"
    597                 "{"
    598                 "    float2 q = p + float2(-0.5, 0.5) * u_TexelSize.xy;"
    599                 "    q -= fmod(q, 2.0 * u_TexelSize.xy);"
    600                 "    q += float2(1.5, 0.5) * u_TexelSize.xy;"
    601                 "    return float3(q * float2(1.0, 0.25) + float2(0.0, 0.75),"
    602                 "                  length(q - p));"
    603                 "}"
    604                 ""
    605                 "void main(float2 a_TexCoord : TEXCOORD0,"
     593                "void main(in float4 v_CenterX,"
     594                "          in float4 v_CenterY,"
     595                "          in float4 v_IndexX,"
     596                "          in float4 v_IndexY,"
    606597                "          uniform float4 u_TexelSize,"
    607                 "          uniform sampler2D in_Texture,"
     598                "          uniform sampler2D u_Texture,"
    608599                "          out float4 out_FragColor : COLOR)"
    609600                "{"
    610                 "    float2 coord = a_TexCoord.xy;"
    611                 "    coord -= 0.1 * u_TexelSize.xy;"
    612                 "    float4 p0 = tex2D(in_Texture, nearest0(coord, u_TexelSize).xy);"
    613                 "    float4 p1 = tex2D(in_Texture, nearest1(coord, u_TexelSize).xy);"
    614                 "    float4 p2 = tex2D(in_Texture, nearest2(coord, u_TexelSize).xy);"
    615                 "    float4 p3 = tex2D(in_Texture, nearest3(coord, u_TexelSize).xy);"
    616                 "    out_FragColor = 0.25 * (p0 + p1 + p2 + p3);"
     601                "    float4 v05 = float4(0.5, 0.5, 0.5, 0.5);"
     602                "    float4 rx, ry, t0, dx, dy, dd;"
     603                "    rx = u_TexelSize.x + u_TexelSize.z * floor(v_IndexX);"
     604                "    ry = u_TexelSize.y + u_TexelSize.w * floor(v_IndexY);"
     605                "    t0 = step(abs(rx - v05), v05) * step(abs(ry - v05), v05);"
     606                "    dx = rx - v_CenterX;"
     607                "    dy = ry - v_CenterY;"
     608                "    dd = t0 / (0.000001 + (dx * dx) + (dy * dy));"
     609                "    ry = ry * 0.25 + float4(0.0, 0.25, 0.5, 0.75);"
     610                "    float2 t1 = step(dd.xz, dd.yw);"
     611                "    float4 ret = lerp(float4(rx.xz, ry.xz),"
     612                "                      float4(rx.yw, ry.yw), t1.xyxy);"
     613                "    dd.xy = lerp(dd.xz, dd.yw, t1);"
     614                "    float t2 = step(dd.x, dd.y);"
     615                "    ret.xy = lerp(ret.xz, ret.yw, t2);"
     616                     /* FIXME: above currently broken; fall back to this */
     617                "    ret.xy = float2(v_CenterX.x, v_CenterY.x * 0.25);"
     618                "    out_FragColor = tex2D(u_Texture, ret.xy);"
    617619                "}"
    618620#endif
Note: See TracChangeset for help on using the changeset viewer.