unity shader 之 几何变换--扭曲

来源:互联网 发布:福建顶点软件招聘 编辑:程序博客网 时间:2024/05/16 04:42


Shader "Custom/twist" {SubShader {Pass {CGPROGRAM#pragma vertex vert #pragma fragment frag #include "unitycg.cginc"struct v2f {float4 pos : POSITION;float4 color : COLOR0;};v2f vert(appdata_base v){float angle = length(v.vertex) * _SinTime.w;//旋转矩阵//float4x4  m =//{//float4(cos(angle), 0, sin(angle), 0),//float4(0, 1, 0, 0),//float4(-sin(angle), 0, cos(angle), 0),//float4(0, 0, 0, 1),//};//对旋转矩阵进行优化计算,其实就是手动的进行旋转矩阵的相乘的结果float x = cos(angle) * v.vertex.x + sin(angle) * v.vertex.z;float z = cos(angle) * v.vertex.z - sin(angle) * v.vertex.x;v.vertex.x = x;v.vertex.z = z;//v.vertex = mul(m, v.vertex);v2f o;o.pos = mul(UNITY_MATRIX_MVP, v.vertex);o.color = fixed4(0, 1, 1, 1);return o;}fixed4 frag(v2f IN) : COLOR {return IN.color;}ENDCG}}FallBack "Diffuse"}

效果如下(需要运行):



继续改造代码,呈现一些不同的效果:

修改 22 行如下:

float angle = length(v.vertex) * _Time.y;


注释掉32, 33, 34, 39, 41,然后在36行添加如下代码:

float x = sin(angle) * v.vertex.x;

运行后效果如下(类似水波的效果):




0 0
原创粉丝点击