在片段着色器中通过对uv进行多重变换实现丰富的纹理表现效果(GLSL源码)示例
请见demo:http://www.artvily.com/renderCase?sample=uvMultCalc
/ 着色器glsl代码示例(由编辑器生成) ///// ** vshd_str:
precision mediump float;
precision mediump int;
layout(location = 0) in vec3 a_vs;
layout(location = 1) in vec2 a_uvs;
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectMatrix;
out vec2 v_uvs;void main()
{
vec4 result4_0 = vec4(0.0);
vec4 vtxVec4;
vtxVec4 = vec4(a_vs.xyz,1.0);
mat4 mModelMat = modelMatrix;
vtxVec4 = mModelMat * vtxVec4;
mat4 mViewMat = viewMatrix;
vtxVec4 = mViewMat * vtxVec4;
mat4 mProjMat = projectMatrix;
vtxVec4 = mProjMat * vtxVec4;
result4_0 = vtxVec4;
gl_Position = result4_0;
v_uvs = a_uvs;}
// ** fshd_str: precision mediump float;
precision mediump int;
uniform sampler2D u_sampler0;
uniform sampler2D u_sampler1;
uniform sampler2D u_sampler2;
in vec2 v_uvs;
layout(location = 0) out vec4 fragOutput0;
const float MATH_PI = 3.1415926;
const float MATH_2PI = 2.0 * MATH_PI;
const float MATH_1PER2PI = 0.5 * MATH_PI;
const float MATH_3PER2PI = 3.0 * MATH_PI * 0.5;
float getRadianByXY(float dx,float dy)
{if(abs(dx) < 0.00001){if(dy >= 0.0) return MATH_1PER2PI;else return MATH_3PER2PI;}float rad = atan(dy/dx);if(dx >= 0.0){return rad;}rad = MATH_PI + rad;return rad;
}void main()
{
vec4 result4_1 = vec4(0.0);
vec4 color4;
color4 = texture(u_sampler0, v_uvs.xy);
result4_1 = color4;
vec4 tex_48_color4 = texture(u_sampler1, v_uvs.xy);
color4 = tex_48_color4;
tex_48_color4.xyz = tex_48_color4.xyz * 2.5;
result4_1.xyz = (result4_1.xyz + tex_48_color4.xyz);
color4 = texture(u_sampler2, v_uvs.xy);
result4_1.xyz = result4_1.xyz * color4.xyz;
vec4 texUV4;
texUV4.xy = (getRadianByXY(v_uvs.x - 0.5, v_uvs.y - 0.5) + abs(v_uvs.xy - vec2(0.5,0.5))) * 2.0;
tex_48_color4 = texture(u_sampler1, texUV4.xy);
color4 = tex_48_color4;
tex_48_color4.xyz = tex_48_color4.xyz * 0.5;
result4_1.xyz = (result4_1.xyz + tex_48_color4.xyz);
vec2 temp_0_RDV2 = vec2(v_uvs.x - 0.5, v_uvs.y - 0.5);
temp_0_RDV2.xy = 0.1 * result4_1.xy + vec2(0.5 + length(temp_0_RDV2) * 0.707);
texUV4.xy = temp_0_RDV2 * 3.0;
tex_48_color4 = texture(u_sampler1, texUV4.xy);
color4 = tex_48_color4;
result4_1.xyz = (result4_1.xyz + tex_48_color4.xyz);
fragOutput0 = result4_1;}/
在片段着色器中通过对uv进行多重变换实现丰富的纹理表现效果(GLSL源码)示例相关推荐
- 【OpenGL】高级片段着色器——在片段着色器中生成图像数据茹利亚集Julia set
茹利亚集:z(n) = z(n-1)^2 + c , z是顶点纹理坐标,c是统一值,片段着色器会迭代最大max_iterations次,其中若z值大于阈值threshold_squared则跳出,其迭 ...
- Unity 3D 图形学 Shader之顶点与片段着色器(五)
通过实现一个只有颜色属性可调节的简单材质效果更好的了解顶点与片段着色器 一.顶点着色器 顶点着色器就是处理顶点的着色器,每个顶点都会执行一次顶点着色器.我们先认识下顶点函数的结构: 顶点着色器函数的名 ...
- Unity Shader:细分着色器(Tessellation Shader)在Unity顶点着色器中的写法以及各参数变量解释
图1:在Unity内将sphere细分后 图2:在Unity内将sphere细分后 Unity官网关于细分着色器的资料比较少,只有在Surface Shader中使用的例子.我看了下Surface S ...
- Learn OpenGL(四)——片段着色器(Fragment Shader)
片段着色器(Fragment Shader) 片段着色器是第二个也是最终我们打算创建的用于渲染三角形的着色器. 片段着色器的全部, 都是用来计算你的像素的最后颜色输出. 为了让事情比较简单, 我们的片 ...
- 网页高性能图形编程(四)-WebGL颜色-使用着色器绘制多顶点颜色的三角图形 操作部骤-顶点着色器和片段着色器 着色器编译羽图像绘制-vertexAttribPointer 方法
第5章-WebGL颜色 01-操作步骤介绍 颜色添加步骤 在顶点着色器中定义一个接收外部传入颜色值的属性变量a_Color和用于传输获取到的颜色值变量v_Color 在片段着色器中定义一个同一类型和名 ...
- opengl之高级GLSL(1)-顶点着色器变量与片段着色器变量
官方教程位置 openglCN GLSL的内建变量: 我们已经学会使用顶点属性.uniform和采样器来完成这一任务了.然而,除此之外,GLSL还定义了另外几个以gl_为前缀的变量,它们能提供给我们更 ...
- Shader山下(八)片段着色器
Shader可以分为两类: 表面着色器(Surface Shader) - 为你做了大部分的工作,只需要简单的技巧即可实现很多不错的效果,但也显示了部分功能. 片段着色器(Fragment Shade ...
- Vertex and FragmentShader顶点与片段着色器
一.顶点与片段着色器简介 Vertex and FragmentShader:最强大的Shader类型,也是本系列的重点,下文中简称V&FShader,属于可编程渲染管线.使用的是CG/HLS ...
- 顶点与片段着色器的例子
视窗坐标 Shader "Custom/WindowCoordinates/Base" {SubShader {Pass {CGPROGRAM#pragma vertex vert ...
最新文章
- python编程软件v-Python编程狮
- python梯度下降法实现线性回归_梯度下降法的python代码实现(多元线性回归)
- jzoj2137-(GDKOI2004)城市统计【二维前缀和,bfs】
- php memcached close,PHP连接Memcached安装及数据库操作
- 《软件开发性能优化系列》之死锁
- 关于区块链的一点经济学思考
- 詹森不等式的积分形式
- 未来无生经超级计算机,最强崩坏系统
- Springboot爱护大自然的设计与实现 毕业设计-附源码231643
- 怎么把微信公众号的文章里的音频或视频下载到电脑和手机
- C#语言实例源码系列-鼠标左右键颠倒
- 一缕烟香起静中开鸿蒙意思,一缕青烟暗指什么意思 千古萦回一缕香
- 收集各种 iOS App 开发可以用到的代码示例
- Mac下关闭英文自动纠错
- 记一次requestAnimationFrame之后页面崩溃、内存泄漏问题
- Web返回结果和HTTP状态码详解
- Filter过滤器的理解(一)
- 第一届大数据技术创新与创业大赛
- 在k线画出买卖点---pyecharts
- 转:CentOS 7 安装Nginx
热门文章
- 对超短脉冲的色散效应的研究
- 关于双因素认证(2FA),这些基础知识你一定要知道
- butter滤波器是iir吗_MATLAB IIR滤波器设计函数buttord与butter
- CCF-CSP认证历年真题解(100分)
- Mac Elasticsearch 7.9.3 安装指南
- 《网络空间内生安全》读书笔记:第七章 动态异构冗余架构
- 关于微信小程序简单瀑布流的制作
- UCOSII操作系统(四)--任务管理
- 编译原理 实验四 LR(0)分析法(LR0分析表的自动生成)
- 解决Python3 urllib3 urllib3.exceptions.maxretryerror: httpsconnectionpool(host=‘xxxxx‘, port=443)