comfyUI-AI绘画
基本操作 左键拖动,滚轮放大缩小,右键空白处可以呼出节点的菜单栏,从这里可以添加想要的节点。双击空白处,可以搜索节点并添加。搜索节点时要区分是否由空格,不然搜索出来的节点可能和想象中的不一样,例如加载图像这个节点如果搜索load image则并不会显示加载图像节点这个选项,并需要用loadimage搜索才可以。
123456789101112Ctrl + Enter 快速生成当前图形Ctrl + 鼠标左键 框选多个节点Shift + 鼠标左键 移动框选的多个节点(直接点左键移动,指挥移动当前一个)Ctrl + O 加载工作流程Alt +C 折叠/取消折叠选定节点Ctrl + B 绕过选定的节点(就像从图中移除节点,然后重新连接线一样)Ctrl + Delete/Backspace 删除当前图形Ctrl+C/Ctrl+V 复制和粘贴选定的节点(不维护与未选定节点输出的连接)Ctrl+C/Ctrl+Shift+V 复制和粘贴选定节点(维护从未选定节点的输出到粘贴节点的输入的连接)Ctrl + D 加载默认图形Q 切换 ...
Unity Shader-卡通效果
基本漫反射代码编写
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162Shader "Unlit/017"{ Properties { _MainTex ("Texture", 2D) = "white" {} _Diffuse("Diffuse", Color) = (1,1,1,1) } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM # ...
Unity Shader-透明效果
渲染顺序 先画不透明物体,再画透明物体,渲染顺序非常重要,不能随意改动,如果没有一个渲染顺序则会导致部分物体无法被画到屏幕上。先渲染不透明物体,再渲染透明物体,之后再对不透明物体从后往前排序渲染
透明度测试:概念 只要一个片元的透明度不满足条件(通常小于某个阈值),那么就舍弃对应的片元。被舍弃的片元不会在进行任何的处理,也不会对颜色缓冲产生任何影响;否则,就会按照普通的不透明物体来处理,即进行深度测试,深度写入等等。虽然简单,但是很极端,要么完全透明,要么完全不透明。
例如下图
假如说我们代码中缩写为当α小于0.5是便会舍去上半部分,指挥渲染下班α大于0.5的部分,但之后不会再去干其α的值为多少,统一将其按照不透明物体渲染。最后渲染出来便为一座山。
代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071Shader "Unlit/014&qu ...
Unity Shader-纹理
渐变纹理可以用于实现卡通效果
代码实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071Shader "Unlit/012"{ Properties { _RampTex("MainTex", 2D) = "white"{} _Diffuse("Diffuse", Color) = (1,1,1,1) _Specular("Specular", Color) = (1,1,1,1) _Gloss("Gloss", Range(1,256)) = 5 } SubShader { Tags ...
Unity Shader-法线贴图
凹凸映射 在平面上法线是一直垂直于平面的,则在凹凸不平的平面上,根据射入光的角度不同,所对应的法线角度也不同,所以我们可以通过改变法线的酵素来达到模拟凹凸不平的平面的场景。
三种映射方式
高度映射 类似于地理中等高线,利用不同的高度代表不同的颜色(范围0~1),以此来绘制图片,根据值的趋向来分别颜色。因为计算方式比较复杂,所以一般不去使用。
法线映射 法线纹理,直接使用纹理代表法线(分量范围-1到1),要使用贴图(范围0到1)代表法线需要进行一定的计算。公式如下
prel:像素值,n:法线
后两种映射方式可以用来实现法线纹理,但后者的使用会比前者更多,因为前者的法线纹理是一个绝对法线信息(其uv和原模型上的uv完全匹配),所以倒是移植性很差,只适用于当前模型。
模型空间下法线映射 法线到纹理的映射
因为可以表的纹理很多,所以其色彩会比较多样。
切线空间下的法线映射 什么是切线空间,切线空间中原点便为模型顶点,
向量b为副切线,n为法线,t为切线
1b = t * n
原本模型空间中法线n不变的情况下:
新的法线在切线空间中 = ...
Unity Shader-光照
反射与折射只考虑平行光,且物体表面光滑。
高光反射:光射到物体表面直接被反射出来被成为高光反射,既图中红色所画出的光线。
漫反射:光射向物体表面,折射在物体内部的光经过不断地折射,再次射出物体,此被称为漫反射,既图中地蓝色所画出的光线。
BRDF光照模型:用于模拟真实地光物理。
SSS材质:用于描述光物理,属于BRDF中次表面反射其中地一部分。
标准光照模型 该光照为直接光照,由光直接照射在物体表面,在反射到摄像机上,其中包含自发光,高光反射,漫反射,环境光(用于描述间接光照)。
间接光照 间接光照:例如在一个红色的方块和一个蓝色的小球,当光照射到方块上经反射后照射在蓝色小球上呈现红色,在被照射到的地方,月接近方块,颜色越红,此被称为间接光照。
自发光 自发光:由物体直接发光射向摄像机(自发光就等于材质颜色,本身不对周围物体造成影响,由unity中引入了全局光照之后,可以对此中影响进行模拟)。
漫反射 当光照垂直于物体表面射入时没有漫反射,漫反射的强度由光的入射角度决定,颜色由光的颜色和被照射物体的材质影响。强度可以使用入射角的cos去计算。cosθ可以 ...
Unity Shader入门
123456789101112131415161718192021CGPROGRAM#pragma vertex vert#pragma fragment frag//POSITION SV_POSITION 语义,不可省略,//此处vert的frag名字必须与前面#pragma中定义的名字一样,否则会报错。float4 vert(float4 v:POSITION):SV_POSITION{ return UnityObjectToClipPos(v);}// float4 v:POSITION代表顶点信息(输入),float4代表4维向量。// SV_POSITION 输出之后的在裁剪空间的顶点信息。//片元着色器,最后返回到屏幕上,返回fixed4(1,1,1,1)fixed4 frag():SV_TARGET{ return fixed4(1,1,1,1);}ENDCG
结构体输入结构体12345678910111213struct a2v{ //用模型顶点填充v变量 float4 v:POSITION; //用模型的发现填 ...
Unity Shader语法
什么是UnityShader Unity Shader实际上指的就是一个ShaderLab文件。以.shader作为后缀的一种文件。在Unity shader里面,我们可以做的事情远多于一个传统意义上的Shader。
在传统的shader中,我们仅可以编写特定类型的Shader,例如顶点着色器,片元着色器等。在Unity Shader中,我们可以在同一个文件里面同时包含需要的顶点着色器和片元着色器代码。
在传统shader中,我们无法设置一些渲染设置,例如是否开启混合,深度测试等,这些是开发者在另外的代码中自行设置的。而Unity shader中,我们通过一行特定的指令就可以完成这些设置。
在传统shader中,我们需要编写冗长的代码设置着色器的输入和输出,要小心的处理这些输入输出的位置对应关系等。而在Unity shader中,我们只需要在特定语句块中声明一些属性,就可以依靠材质来方便的改变这些属性。而对于模型自带的数据(如顶点,纹理坐标,法线等),Unity Shader也提供了直接访问的方法,不需要开发者自行编码来传给着色器。
UnityS ...
Unity Shader概述
三大Shader编程语言1)基于OpenGL的OpenGL Shading Language,简称GLSL。
2)基于DirectX的High Level Shading Language,简称HLSL。
3)还有NVIDIA公司的C for Graphic,简称Cg语言。
渲染流水线三大阶段应用阶段
Cpu负责(绝对控制权)
1)准备场景数据(例如场景中摄像机位置,视锥体等等)。
2)不可见剔除。
3)设置渲染状态。
该阶段输出渲染图元(使用的纹理,shader,高光反射颜色,漫反射等)给几何阶段。
几何阶段
Gpu负责:重要任务是把顶点坐标变换到屏幕空间中,再交给光栅器进行处理。
该阶段输出屏幕空间的顶点信息给光栅化阶段
光栅化阶段
Gpu负责:使用上个阶段传递的数据来产生屏幕上像素并最终渲染出来。
应用阶段1)把数据加载到显存中
将渲染所需数据从硬盘中加载到内存中,网络纹理等数据又被加载到显存中(一般加载到显存后内存中的数据就会被移除)
2)设置渲染状态
这些状态定义了场景中的网格是怎么被渲染的。例如,使用哪个顶点这瑟琪,片原 ...
unity寻路算法
寻路算法A*寻路算法A*寻路就是用来计算玩家或者敌人的行进路径,通过它可以计算除避开阻挡的最短路径
基本原理开始寻找起点周围相邻的格子中所有不被阻挡的区域,找到后选择距离终点最近的点行走,之后再重复之前的操作,但不会寻找已经找过的点,直至到达终点。
详细原理寻路消耗公式: f(寻路消耗) = g(离起点的距离) + h(离终点的距离,计算该距离最常用曼哈顿街区算法)
开启列表、关闭列表及格子对象的父对象 开启列表和关闭列表相当于两个容器,开启列表中每一项包含该点,g(离起点的距离),h(离终点的距离)和该点的父对象,关闭列表中每一项包含该点以及他的父对象。
父对象便是该格子对象的父对象
从a点开始到达蓝色方块,先将a点放入关闭列表中,再去寻找周围8个点(从左到右,从上到下,依次为a1~a8),将可行走区域的点放入开启列表,并计算其g(离起点的距离)的值(计算两点之间的直线距离),a2,a4,a5,a7为1加上父对象的g值,其余的为根号2约为1.4加上父对象的g值,使用曼哈顿街区算法计算出每个点的h(离终点的距离)值,由此可以得出每个点的f(寻路消耗)值, ...