<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_69722751的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_69722751</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_69722751]]></copyright><item><title><![CDATA[unityshader自己学习笔记--光照--不同世界向量导致的bug]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130221842</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130221842</guid><author>m0_69722751</author><pubDate>Tue, 18 Apr 2023 14:52:49 +0800</pubDate><description><![CDATA[可以看到，N使用的是模型空间的法向量，L是世界空间的光照方向。两个向量不在一个坐标。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--光照--2.漫反射与环境光.md]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130221703</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130221703</guid><author>m0_69722751</author><pubDate>Tue, 18 Apr 2023 14:50:46 +0800</pubDate><description><![CDATA[法向量和顶点指向光源的向量的点积（dot）== cos角度。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--光照--法向量与光照]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130221576</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130221576</guid><author>m0_69722751</author><pubDate>Tue, 18 Apr 2023 14:44:15 +0800</pubDate><description><![CDATA[可以根据向量点乘计·算出两条向量的夹角，再通过jcos夹角计算出三角面的颜色。向量的叉乘可以求出平面的垂直法向量。法向量根据左手螺旋定则判断正方向。法向量对于计算光照是至关重要的。而且叉乘时要注意左手螺旋定则。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--vertex shader--顶点转换]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130221405</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130221405</guid><author>m0_69722751</author><pubDate>Tue, 18 Apr 2023 14:37:21 +0800</pubDate><description><![CDATA[将顶点转为视口需要注意的是，unity的矩阵顺序是反的，也就是：视口–相机—世界验证猜想，脚本中模型可以着色。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--vertex shader--顶点转换]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130221388</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130221388</guid><author>m0_69722751</author><pubDate>Tue, 18 Apr 2023 14:36:35 +0800</pubDate><description><![CDATA[将顶点转为视口需要注意的是，unity的矩阵顺序是反的，也就是：视口–相机—世界验证猜想，脚本中模型可以着色。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--vertex shader--uniform]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130220848</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130220848</guid><author>m0_69722751</author><pubDate>Tue, 18 Apr 2023 14:20:36 +0800</pubDate><description><![CDATA[注意，效果需要运行起来才能看到。将shader和脚本连接起来。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--vertex shader--1.顶点数据的输入输出]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130220442</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130220442</guid><author>m0_69722751</author><pubDate>Tue, 18 Apr 2023 14:08:47 +0800</pubDate><description><![CDATA[而且，从顶点到线段的过程中，所需要的数据是无法确定的，所以没有v2f的模板，但是模型到顶点的模板是有的。而且下面即使没有导入该结构体，只要有相关语义，就可以。可以将objPos的语义改成任何没有重复的语义比如。但是这样写不是很优雅，此时，我们就可以用到结构体。要注意的是，如果选择return，那么必须带。如果想返回多个数据，比如我想将模型坐标输出。没有使用和初始化的参数，它自己会有默认值。此时不能简单的写成下面的样子。因为使用了相同的语义。，所以无法正常使用了。而且可以给结构体别名。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--基础知识--光照算法演变过程]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130220371</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130220371</guid><author>m0_69722751</author><pubDate>Tue, 18 Apr 2023 14:06:46 +0800</pubDate><description><![CDATA[不同的光照shader，同条件下会有不一样的结果。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--基础知识--5.if判断和不规则炫彩球案例]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130220332</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130220332</guid><author>m0_69722751</author><pubDate>Tue, 18 Apr 2023 14:04:28 +0800</pubDate><description><![CDATA[pass已经是循环,不用再写for。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--基础知识--顶点着色器输出和片元着色器输入]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130220248</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130220248</guid><author>m0_69722751</author><pubDate>Tue, 18 Apr 2023 14:02:54 +0800</pubDate><description><![CDATA[顶点着色器需要输出顶点的最终裁剪空间位置，以便 GPU 知道屏幕上的栅格化位置以及深度。此输出需要具有  语义，并为  类型。顶点着色器生成的所有其他输出（“插值器”或“变化”）都是您的特定着色器需要的。从顶点着色器输出的值将在渲染三角形的面上进行插值，并且每个像素的值将作为输入传递给片元着色器。许多现代 GPU 并不真正关心这些变量的语义；然而，一些旧系统（最主要的是 Direct3D 9 上的着色器模型 2 GPU）存在关于语义的特殊规则：为了获得最佳的跨平台支持，应将顶点输出和 片元输入标记为  语义]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--基础知识--float4和散开正方体案例]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130120623</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130120623</guid><author>m0_69722751</author><pubDate>Thu, 13 Apr 2023 03:13:20 +0800</pubDate><description><![CDATA[HLSH的基本数据类型定义了float、int和bool等非向量类型，但是它们实际上都会被Complier转换成float4的向量， 只要把float4向量的其中3个数值忽略，就可以把float4类型作为标量使用。注意，Shader中的所有的变量都使用寄存器，没有其他内存空间可以使用，所以越大的数组会占用越多的寄存器，甚至会超出寄存器的数量限制。在unity内部，通过矩阵的方式来描述这些点，一般情况下我们觉得 3*3的矩阵就能够描述一个点了，但是这样的点是没有办法进行变换的 ： 旋转、缩放还有平移。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--基础知识--VScode]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130120619</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130120619</guid><author>m0_69722751</author><pubDate>Thu, 13 Apr 2023 03:13:15 +0800</pubDate><description><![CDATA[编译一般选择VScode这种轻量级别的IDE。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--基础知识--surface实现颜色改变]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130120620</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130120620</guid><author>m0_69722751</author><pubDate>Thu, 13 Apr 2023 03:12:17 +0800</pubDate><description><![CDATA[POSITION 表示模型空间顶点位置SV_POSITION 表示投影空间的顶点位置下方顶尖函数的意思是:传入一个模型空间的函数,转出一个投影空间的函数片元函数的为:颜色乘亮度值//直接调用Unity提供的函数转换到投影空间 return UnityObjectToClipPos(v);} //指定的片元着色器 //SV_Target 表示最后输出的颜色 fixed4 frag() : SV_Target {这个shader的效果为颜色的变化跟着亮度走。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--基础知识--surface]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130120618</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130120618</guid><author>m0_69722751</author><pubDate>Thu, 13 Apr 2023 03:10:49 +0800</pubDate><description><![CDATA[分别为颜色，主纹理，高光度，金属光泽度surface不需要pass，因为surface本来就死打包好的一种形式，pass也被打包了为调整透明度，如果是透明物体会先渲染为代码块，代表在ENDCG前，都使用的CG语言为指令，后面跟着surface代表这个shaderlab的编译方式为可以随意起名，代表后面的函数名称（surfFuction）Standard为光照模型的一种，也是一种函数，是基于物理的光照计算为生成阴影的一种选择之一3.0使用硬件的等级，等级越高越好看声明_MainTex纹理的结构体。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--基础知识--固定管线刨析]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130120614</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130120614</guid><author>m0_69722751</author><pubDate>Thu, 13 Apr 2023 03:06:30 +0800</pubDate><description><![CDATA[需要注意，如果想将外部的颜色直接赋值给shader的color，要使用。上，它是代表顶点着色后光照的颜色，不包括贴图，所以这里应该使用。此时虽然可以改颜色，但是看起来只是个简单的二维球形。可以看到，大面积的反射高光明显不是我们想要的。该纹理使用时没用到之前设置的光照数值，是因为。都是0-1的数值，所以最后的显示颜色灰暗一些。只能加载一个纹理，所以多纹理混合可以多写几个。此时发现无论改什么颜色，球体都是纯白色。此时所看到的颜色就是物体自身的颜色。但是可以看到没有任何反应，问题出在。加上double会改善。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--基础知识--shaderLab]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130120612</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130120612</guid><author>m0_69722751</author><pubDate>Thu, 13 Apr 2023 03:05:19 +0800</pubDate><description><![CDATA[使用这种格式，可以让三种shader都适用。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--CG语言--CG函数库]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/130120609</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/130120609</guid><author>m0_69722751</author><pubDate>Thu, 13 Apr 2023 03:00:08 +0800</pubDate><description><![CDATA[当你使用的纹理函数允许你指定一个深度比较值的时候，与之相关联的纹理单元必须被设置成深度比较纹理。否则，深度比较实际上不会被执行。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--CG语言--CG函数]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/129989324</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/129989324</guid><author>m0_69722751</author><pubDate>Thu, 06 Apr 2023 14:45:38 +0800</pubDate><description><![CDATA[在CG中，所有的传参都是浅拷贝因为所有形参都是浅拷贝，所以最简单的操作就是使用out，意思是这个运算结果直接在原函数中输出。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--CG语言--CG语法]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/129989283</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/129989283</guid><author>m0_69722751</author><pubDate>Thu, 06 Apr 2023 14:44:57 +0800</pubDate><description><![CDATA[循环不能超过1024次。]]></description><category></category></item><item><title><![CDATA[unityshader自己学习笔记--CG语言--CG数据结构]]></title><link>https://blog.youkuaiyun.com/m0_69722751/article/details/129989008</link><guid>https://blog.youkuaiyun.com/m0_69722751/article/details/129989008</guid><author>m0_69722751</author><pubDate>Thu, 06 Apr 2023 14:36:41 +0800</pubDate><description><![CDATA[一般来说，cg的源代码都会在文件首部定义两个结构体，分别用于定义输入和输出的类型，这两个结构体定义与普通的c结构定义不同，除了定义结构体成员的数据类型外，还定义了该成员的绑定语义类型，所谓绑定语义类型是为了与宿主环境进行数据交换的时候识别不同数据类型的。结构体的声明以关键字struct开始，然后紧跟结构体的名称，接下来是一个大括号，并以分毫结尾（不要忘了分号）。例如，定义一个名为myAdd的结构体，包含一个成员变量，和一个执行相加的功能的成员函数，然后声明一个该结构体类型的变量。不过目前的Cg 语言中的。]]></description><category></category></item></channel></rss>