Cg入门10:Vertex Shader - 几何变换 —MVP矩阵变换

Unity内建矩阵类型:

M:世界矩阵

V:摄像机矩阵

P:投影矩阵

T :矩阵的转置

IT : 转置的的逆

_Object2World: 模型到世界矩阵

_World2Object:世界到模型矩阵

MVP 矩阵变换:Shader Demo

MVP 转置变换:C# demo

Matrix4x4 mvp = Camera.main .projectionMatrix * Camera.main .worldToCameraMatrix * transform .localToWorldMatrix;

矩阵相乘是有顺序的,如果没有真正显示,就逆着相乘看下效果。

最后对shader 的mvp 属性赋值mvp 矩阵,而不使用unity内建的UNITY_MATRIX_MVP矩阵

时间: 2024-10-11 04:10:44

Cg入门10:Vertex Shader - 几何变换 —MVP矩阵变换的相关文章

Cg入门11:Vertex Shader - 几何变换 —MVP矩阵变换(旋转、缩放)

旋转.缩放demo C# Code: Shader Code:

Cg入门14:Vertex Shader - 几何变换 —顶点扭曲

mul (UNITY_MATRIX_MVP,upPos): 参数说明 由第一个参数UNITY_MATRIX_MVP 矩阵去影响第二个参数upPos向量(或者矩阵) Shader "Sbin/vf35" { SubShader { pass{ CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct v2f{ float4 pos : POSITION; fl

Cg入门15:Vertex Shader - 几何变换 —波

Shader "Sbin/vf36" { SubShader { pass{ CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct v2f{ float4 pos : POSITION; float4 col : COLOR; }; v2f vert(appdata_base v){ //v.vertex.y += sin(-length(v.verte

Cg入门13: Vertex Shader - 几何变换 —顶点位移

注意:向量进行计算的时候,不仅代表大小,还代表方向.记得代表方向有利于队变换计算的理解 效果如下:

vertex shader(2)

一次只有一个vertex shader是活跃的.你可以有多个vertex shader,如果一个物体特殊的变换或者灯光,你可以选择合适的vertex shader来完成这个任务. 你可能想使用vertex shaders在每个物体或每个网格上,例如,十个网格,你可以使用十个不同的vertex shader,但那样可能会harm你的游戏的运行. 每个vertex shader-driven程序必须通过下面的步骤运行: 1.检查你的设备是否支持vertex shader. (在direct X9以后

Cg入门9:Vertex Shader - Uniform 与 properties属性

_AppSetColor 声明处:可以在float4 _AppSetColor前面加Uniform ,或者不加都可以(注意:加的话好像,需要unity 5以上的版本) C# 代码

Cg入门25: Fragment shader – UV动画(模糊)

疑问:偏导函数是什么? 物理意义和几何意义? ddx():为x轴的偏导函数 ddy():为y轴的偏导函数 源代码: Shader "Sbin/FragmentAnimShader" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma

Cg入门24: Fragment shader – UV动画(波纹)

效果: 源代码: Shader "Sbin/FragmentAnimShader" { Properties { _MainTex ("Texture", 2D) = "white" {} _F("F",Range(1,30))=10 _A("A",Range(0,0.1))=0.01 _R("R",Range(0,1))=0 } SubShader { Pass { CGPROGRAM

Cg入门17:Fragment shader - 片段级光照(添加阴影)

投射阴影 方法一:添加一个单独的pass通道 pass { Tags{"LightMode" = "ShadowCaster"} } ShadowCaster:阴影投射器,可以投射阴影 方法二:添加物体默认阴影投射 FallBack "Diffuse" 然后给光线开启阴影: 效果如下:(效果图为添加平行光) 如果要让我们的shader支持点光源阴影投射,就添加 FallBack "Diffuse" 添加点光源后效果: 接收阴影