几个 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
- 几个 shader
- openGL---shader的几个变量
- GLSL下几个简单的Shader
- 记录Uniyt3d Shader的几个用法
- 几个比较很重要的Shader相关教程
- shader
- shader
- shader
- Shader
- Shader
- shader
- shader
- shader
- Shader
- shader
- Shader
- shader
- Shader
- 跨知识域思维与总结
- aspx 返回json
- MySql中有哪些存储引擎
- QT QWebEngineView加载网页 resize 与 resizeEvent的区别
- Android开发中一些被冷落但却很有用的类和方法
- 几个 shader
- 1047. Student List for Course (25)
- 对于大流量的网站,您采用什么样的方法来解决访问量问题?
- 递归算法-->汉诺塔hanoi
- android消息通知更新(小红点,数字提醒)之badgeview
- ijkplayer集成
- datatable添加行
- View的工作原理(二)
- WKWebView的简单使用,与js交互