前一篇转自msdn的一篇文章,具体介绍了GLSL到HLSL的参考。本来是想用Unity Shader复ShaderToy(https://www.shadertoy.com/)里面那些神奇的Shader。ShaderToy里面的shader都是用WebGL呈现的,用的都是OpenGL,我写shader使用的是Cg,但HLSL和Cg基本都差不多,一般我看都没有介绍GLSL到Cg的转换,了解GLSL到HLSL也就行了。
为什么我在msdn详尽的介绍之后还写一个续篇呢?有两个想介绍的东西。
(1)GLSL与Unity Shader中对应矩阵
首先,我知道这是一个基础知识没学明白才会产生的问题。学一个知识不能仅仅限于编程会用方面,还要懂得原理,否则一旦出了某个熟悉的编程环境就束手无策了,痛的领悟。下面的这个矩阵对应真的很基础,而我还是仔细看了才明白对应关系,如果你也不知道可以参考一下。
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.0);
o.pos = mul(UNITY_MATRIX_MVP, v.position);<