[toc] 如何创建 右键 -> Shader -> Standard Surface Shader # 一个基于 Lambert 的表面着色器 Shader “Custom/SimplestSurfaceShader” { Properties { _Color (“Color”, Color) = (1,1,1,1) _MainTex (“Albedo (RGB)”, 2D) = “white” {} } SubShader { CGPROGRAM // 定义表面函数名为 surf, 使用 Lambert #pragma surface surf...

为了减少 Coder 直接和灯光进行交涉的频次,Unity 提供了新的 Shader 编写方式 - 表面着色器 它对顶点 - 片元着色器进行了封装,还包含了很多的光照模型,比如 Lambert、Blinn-Phong 以及 PBR 等 # 表面着色器的组织结构 1#pragma surface surfaceFunction lightModel [optionalparams] surface : 声明所使用的 Shader 是表面着色器 sufaceFunction : 声明表面着色器的函数名称,称为表面函数 lightModel :...

除了透明测试和混合透明外,Unity 还提供了了另一种实现透明效果的方法:模板测试 Stencil Test , 通过模板测试可以达到逐像素保留或者丢弃像素的目的. # 所以 就是给物体一个模板值 m, 物体本身有个参照值 n, 可以对模板值进行操作,根据比较方法 (大于,小于。等于等等) 决定该像素是否丢弃 # 语法 12345678910Stencil{ Ref referenceValue ReadMask readMask WriteMask writeMask Comp comparisonFunction Pass stencilOperation Fail...

# 透明效果 不透明物体的渲染顺序 # 混合透明效果 # 混合指令 混合指令以 Blend 关键字开始,后面接混合模式。它可以在 SubShader 中使用,也可以在 Pass 中使用. Blend Off: 关闭混合处理,当 Shader 中没有添加任何混合指令的时候,默认关闭 BlendSrcFactor DstFactor: 开启混合处理,允许自定义混合模式,新渲染出来的图像被称为 Source, 简称 Src, 之前已经绘制完成的图像被称为 Destination. 简称 Dst。SrcFactory 为源混合系数,DstFactory...

[toc] # 目的 仅仅是为了摘记算法 # 异或性质 123456x^0 = xx^1111111...111 = ~xx^(~x) = 1111111111x^x = 0a^b = c => a^c=b => b^c=a (交换律)a^b^c = a^(b^c) = (a^b)^c (结合律) # 构造特殊 Mask, 将对应位置放 0 或 1 x 最右边的 n 位清零 1x & (~0<<n) 获取 x 的第 n 位值 (0 或者 1) 1(x>>n) & 1 获取 x...

Lambert 中的光照模型 即漫反射模型 C_diffuse=(C_lightcdotM_diffuse)saturate(vecncdotvecl)C\_{diffuse} = (C\_{light} \\cdot M\_{diffuse})saturate(\\vec{n} \\cdot \\vec{l})C_diffuse=(C_lightcdotM_diffuse)saturate(vecncdotvecl) C_diffuseC\_{diffuse}C_diffuse...

# 组织结构 12345678910111213141516Shader "Name"{ Properties{ //开放到材质面板的属性 } SubShader{ //顶点-片段着色器 //或者表面着色器 //或者固定函数着色器 } SubShader{ //更加精简的版本 //为了能在旧的图形设备商运行 } ... Fallback "Name"} #...

# Shader Setup Create Shader(Vertex and Fragment) Compile Shader Attach shader to progrqam Link Program Use Program # Vertex Shader 12345678910111213141516171819attribute vec3 aVertexPosition;attribute vec3 aNormalPosition;attribute vec2 aTextureCoord;uniform mat4 uModelViewMatrix;uniform mat4...

Selection 可以获取一切选中的物体 比如将所有动画状态进行全连接 12345678910111213141516171819202122[MenuItem("SelectTools/GetSelection")]static void GetSelection(){ Object[] objects = Selection.objects; List<AnimatorState> states=new List<AnimatorState>(); foreach(var obj...

动效是个万金油,哪都能用到 -webkit-transform: os 系统是 webkit,windows 是 - ms 即变换,分为旋转,缩放,平移,和倾斜变形 # 第一个动效 魔改自该网站 https://screenlane.com/?ref=uimovement 注意:这个仅由 css3 控制的动效仅适应如上图简单的条件下,复杂的条件下 (可以用 js 实现),css (暂时不会) 思路是:将当前的 container 作为一个 relative 容器,其子容器均为 abslute, 根据 top,left,bottom.right 来调整大小 设置一个子容器使用...