几个 shader

来源:互联网 发布:.net web编程教程 编辑:程序博客网 时间:2024/05/22 16:52
uniform sampler2D av_texture;varying highp vec3 v_position;varying highp vec2 v_texcoord;void main(void){    gl_FragColor = texture2D(av_texture, v_texcoord);}uniform sampler2D av_texture;varying highp vec3 v_position;varying highp vec2 v_texcoord;varying highp vec2 v_blenduv;uniform float uBlendAngle;uniform float uPlaneWidth;uniform float uPlaneHeight;uniform mat4 uTransformMat;highp float alphaNormalized(float x) {    float lamda = 5.2;    float gamma = 1.0;    float a= 0.5;    if(x <= 0.5) {        x = a * pow(2.0 * x,lamda);    } else {        x = 1.0 - (1.0 - a) * pow(2.0 * (1.0 - x),lamda);    }    x = pow(x,gamma);    return x;}void main(void){    float pi = 3.1415926535898;    float phi,angle,alpha1,alpha2;    //在xz平面    phi = pi * (v_position.z/ uPlaneHeight + 0.5);    float z = cos(phi);    float ringradius = sin(phi);    float theta = pi * 2.0 * ((v_position.x / uPlaneWidth + 0.5));    float x = ringradius * cos(theta);    float y = ringradius * sin(theta);    vec4 pos = uTransformMat * vec4(x,y,z,1.0);    x = pos.x;    y = pos.y;    z = pos.z ;    if(z > 0.0) {        phi = atan(sqrt(y * y + z * z),x);    } else {        phi = atan(abs(y),x);    }    phi = phi/pi * 180.0;    angle = (90.0 + uBlendAngle/2.0) - phi;    alpha1 = angle/uBlendAngle;    alpha1 = clamp(alpha1,0.0,1.0);    alpha1 = alphaNormalized(alpha1);    vec4 color1 = texture2D(av_texture,v_texcoord);    vec4 color2 = texture2D(av_texture,v_blenduv);    gl_FragColor = color2 * alpha1 + color1 * (1.0 - alpha1);    gl_FragColor.a = 1.0;}uniform sampler2D av_texture;varying highp vec3 v_position;varying highp vec2 v_texcoord;uniform mat4 uTransformMat;uniform float uPlaneWidth;uniform float uPlaneHeight;void main(void){    float pi = 3.141592653589793238462643383279502884;    //在xz平面    float phi = pi * (v_position.z/ uPlaneHeight + 0.5);    float theta = pi * 2.0 * ((v_position.x / uPlaneWidth + 0.5));    float z = cos(phi);    float ringradius = sin(phi);    float x = ringradius * cos(theta);    float y = ringradius * sin(theta);    vec4 pos = uTransformMat * vec4(x,y,z,1.0);    //can not use -pos.z,bug.    phi = atan(sqrt(pos.x * pos.x + pos.y * pos.y),pos.z);    theta = atan(pos.y,pos.x);    theta += 2.0 * pi;    theta = mod(theta,2.0 * pi);    float u = clamp(theta/(2.0 * pi),0.0,1.0);    float v = clamp(1.0 - phi/pi,0.0,1.0);    gl_FragColor = texture2D(av_texture, vec2(u,v));}uniform sampler2D av_texture;varying highp vec3 v_position;varying highp vec2 v_texcoord;uniform float uClipAngle;uniform float uPlaneWidth;uniform float uPlaneHeight;uniform mat4 uRotMat;uniform float uFov;void main(void){    gl_FragColor = texture2D(av_texture, v_texcoord);    float pi = 3.14159265358979323846;    float xi = v_position.x/uPlaneWidth + 0.5;    float yi = (v_position.z)/uPlaneHeight + 0.5;    float phi = pi * yi;    float z = cos(phi);    float ringradius = sin(phi);    float clipAngle = uFov/180.0*pi;    float theta = (pi * 2.0 - clipAngle)/2.0 + clipAngle * xi;    float x = ringradius * cos(theta);    float y = ringradius * sin(theta);    vec4 vec = uRotMat * vec4(x,y,z,1.0);    phi = atan(sqrt(vec.x * vec.x + vec.y * vec.y),vec.z);    phi = phi/pi * 180.0;    float blendAngle = 5.0/180.0 * pi;    //sbs no blend    if(uClipAngle/180.0 * pi - blendAngle < pi) {        blendAngle = 0.0;    }    if(phi > uClipAngle/2.0 - blendAngle) {        gl_FragColor.a = (uClipAngle/2.0 - phi)/blendAngle;    }}attribute highp vec3 av_vertex;attribute highp vec2 av_texcoord;attribute highp vec2 av_blenduv;varying highp vec3 v_position;varying highp vec2 v_texcoord;varying highp vec2 v_blenduv;uniform mediump mat4 modelviewprojectionMat;void main(void){    gl_Position = modelviewprojectionMat * vec4(av_vertex.xyz,1.0);    v_position = av_vertex;    v_texcoord = av_texcoord;    v_blenduv = av_blenduv;}attribute highp vec3 av_vertex;attribute highp vec2 av_texcoord;varying highp vec3 v_position;varying highp vec2 v_texcoord;uniform mediump mat4 modelviewprojectionMat;void main(void){    gl_Position = modelviewprojectionMat * vec4(av_vertex.xyz,1.0);    v_position = av_vertex;    v_texcoord = av_texcoord;}attribute highp vec3 av_vertex;attribute highp vec2 av_texcoord;attribute highp vec2 av_blenduv;varying highp vec3 v_position;varying highp vec2 v_texcoord;varying highp vec2 v_blenduv;uniform mediump mat4 modelviewprojectionMat;uniform float uPlaneWidth;uniform float uPlaneHeight;void main(void){    gl_Position = modelviewprojectionMat * vec4(av_vertex.xyz,1.0);    v_position = av_vertex;    v_texcoord = av_texcoord;    v_blenduv = av_blenduv;}uniform sampler2D av_texture;varying highp vec3 v_position;varying highp vec2 v_texcoord;uniform mat4 uTransformMat;uniform float uPanoHeight;uniform float uChartletWidth;uniform float uChartletHeight;uniform float uChartletAngle;void main(void){    float pi = 3.1415926535898;    //在xz平面    float phi = pi * (v_position.z/ uPanoHeight + 0.5);    float z = cos(phi);    float ringradius = sin(phi);    float theta = pi * 2.0 * ((v_position.x / (uPanoHeight * 2.0) + 0.5));    float x = ringradius * cos(theta);    float y = ringradius * sin(theta);    vec4 pos = uTransformMat * vec4(x,y,z,1.0);    //can not use -pos.z,bug.    phi = atan(sqrt(pos.x * pos.x + pos.y * pos.y),pos.z);    theta = atan(pos.y,pos.x);    theta -= pi/2.0;    while(theta < 0.0) {        theta += pi * 2.0;    }    float chartletRadius = sqrt(uChartletWidth/2.0 * uChartletWidth/2.0 + uChartletHeight/2.0 * uChartletHeight/2.0);    float angle = uChartletAngle/180.0 * pi;    float r = (pi - phi)/angle * chartletRadius;    float u = r * cos(theta) + uChartletWidth/2.0;    float v = r * sin(theta) + uChartletHeight/2.0;    u /= uChartletWidth;    v /= uChartletHeight;//    hflip    u = 1.0 - u;//    float u = v_texcoord.x;//    float v = v_texcoord.y;    if(u < 0.0 || v < 0.0        || u > 1.0 || v > 1.0) {        gl_FragColor = vec4(0.0,0.0,0.0,0.0);    } else {        gl_FragColor = texture2D(av_texture, vec2(u,v));    }}uniform sampler2D av_texture;varying highp vec3 v_position;varying highp vec2 v_texcoord;varying highp vec2 v_blenduv;uniform float uBlendAngle;uniform mat4 uTransformMat;highp float alphaNormalized(float x) {    float lamda = 5.2;    float gamma = 1.0;    float a= 0.5;    if(x <= 0.5) {        x = a * pow(2.0 * x,lamda);    } else {        x = 1.0 - (1.0 - a) * pow(2.0 * (1.0 - x),lamda);    }    x = pow(x,gamma);    return x;}vec4 transformPosition() {    //transform from vertex to pos corresponding to uv    //cos(theta) = cos(2pi - theta)    //sin(theta) = -sin(2pi - theta)    //v(x,y,z) => uvpos(x,-z,-y)    vec4 pos = uTransformMat * vec4(v_position.x,-v_position.z,-v_position.y,1.0);    return pos;}void main(void){    float pi = 3.1415926535898;    float phi,angle,alpha1,alpha2;    vec4 pos = transformPosition();    if(pos.x > 0.0) {        phi = atan(sqrt(pos.y * pos.y + pos.z * pos.z),pos.x);    } else {        phi = atan(abs(pos.y),pos.x);    }    phi = phi/pi * 180.0;    angle = phi - (90.0 - uBlendAngle/2.0);    alpha1 = angle/uBlendAngle;    alpha1 = clamp(alpha1,0.0,1.0);    alpha1 = alphaNormalized(alpha1);    vec4 color1 = texture2D(av_texture,v_texcoord);    vec4 color2 = texture2D(av_texture,v_blenduv);    gl_FragColor = color1 * alpha1 + color2 * (1.0 - alpha1);    gl_FragColor.a = 1.0;}
{"version":1,"info":{"gps":{"altitude":0,"longitude":0,"latitude":0},"gyro":{"gy":0.949728,"az":0.006412,"gx":-0.032753,"ay":0.003080,"gz":-0.311359,"ax":0.004583},"offset":"2_744.201_765.480_755.949_0.000_0.000_90.000_744.261_2275.801_753.489_-0.510_-0.300_90.690_3040_1520_1026","serialNumber":"","orientation":{"x":0.232000,"y":0,"z":0,"w":0}}}?  


0 0