主页

Unity Shader | 属性、顶点与片元函数

上一篇博客 介绍了Shader的基本结构,这里我们继续来说Shader的编写,也就是要在 CGPROGRAM 中写代码。首先我们把之前的Shader结构代码复制过来。 123456789101112131415161718192021222324252627282930313233Shader "iMoeGirl/MyShader" { // Shader 名字 // 这里定义一些属性,可以显示在UI面板上用于调节 Properties { // 属性名("Inspector面板上显示出来的属性名", 属性类型) = 默认值 _Color("颜色类型", Color) = (1,1,1,1) _Vector("向量类型", Vector) = (1, 2, 3, 4) _Int("整型", Int) = 11111 _Float("浮点型", Float) = 12.11 _Range("范围类型", Range(100, 1000)) = 128 _Tex2D("贴图类型", 2D) = "white"{} _Cube("立方体贴图类型", Cube) = "white"{} _Tex3D("3D纹理", 3D) = "white"{} } // 子 Shader,可以写多个,显卡运行时, // 从第一个SubShader开始,如果第一个里面的效果都支持,则使用第一个, // 如果发现这个SubShader里面某些效果不支持,则自动运行下一个SubShader SubShader { // 至少有一个Pass,相当于一个方法 Pass { // 在Pass块里写Shader代码 CGPROGRAM // 使用 CG语言编写Shader ENDCG } } // 如果发现所有的SubShader都不支持,则使用Fallback,相当于后备方案 Fallback "VertexLit"} 怎样使用 Properties 中定义的属性Unity3D定义Shader属性所使用的语法,和CG所使用的说法是不一样的,所以我们要在一个Pass中使用Properties中定义的属性,需要在Pass中再以CG的语法再写一遍,其实就是变量名相同,而数据类型不同,在Shader在编译的时候,就会自动将两个变量关联起来。看下面的代码

Unity Shader | 基础

MeshFilter存储一个Mesh(网格,模型的网格,模型的三角面顶点信息) MeshRenderer用于渲染一个物体的外观,数据来源于MeshFilter Material材质包含两部分,贴图和Shader

SVN Cleanup错误 Faild to run the wc db work queue associated with

今天svn更新时,因为一个文件问题,导致了 Faild to run the wc db work queue associated with.... 的错误,无法 Cleanup,也无法 Update,无法 Revert,现在记录一下解决方法,很简单,只需要三个 sqlite 命令即可。 这个过程要用到 sqlite3 的命令行工具,可以在官网下载。找到 Precompiled Binaries for WIndows 中的 sqlite-tools-win32-x86-xxxxxx.zip,点击下载即可,xxxxxx 是指版本号,下载官网上的最新版本即可。 要在 cmd 中运行,还要将下载并解压后的 sqlite 目录加到环境变量的 Path 中,这样就可以直接在 cmd 中使用 sqlite 命令了。 下面是解决问题的流程

使用 Python 去掉 Kindle PC 复制时自动添加的内容

在使用 Kindle PC 软件看英文电子书时,常常会配合 CopyTranslator 软件做剪切板内容翻译,但是最近发现 Kindle PC 在复制内容时,会在剪切板中自动附加上书籍的内容,就像下面这样 123There’s nothing wrong with pursuing venture funding and attempting to grow fast like eBayWalling, Rob; Taber, Mike. Start Small, Stay Small: A Developer's Guide to Launching a Startup (Kindle位置28). The Numa Group, LLC. Kindle 版本. 上面的内容,第一行是我要复制的内容,Walling, Rob; Taber, Mike. Start Small, Stay Small: A Developer's Guide to Launching a Startup (Kindle位置28). The Numa Group, LLC. Kindle 版本. 是Kindle PC自动附加的书籍信息内容,这一点很烦人。 要解决这个问题其实很简单,只要监控剪切板变化时,将剪切板中的字符串,去掉自动附加的内容,然后将新的字符串替换回剪切板即可。接下来我们使用Python来做这件事情,代码只需要很少几行即可。

在Ubuntu上开启Swap

在内存不够大时,需要开启Swap,使用一部分硬盘,作为虚拟内存,解决内存容量不足的情况。这篇博客是以 Ubuntu 基础来操作的,其他 Linux 系统基本类似。很简单,跟着下面的步骤,一步一步来操作即可。 注意:下面命令的操作,都是在终端中进行的

使用外部工具登录Google VPS

Google的VPS创建好后,默认是无法通过外部的工具ssh登录的,要使用外部SSH工具登录,需要修改ssh的配置。 首先在VM实例页面,使用Google网页上的SSH进行登录

使用 Unity 实现漂亮的数学曲面(下)

上一篇博客我们实现了一些简单的数学曲面,这一节我们将继续更复杂的数学曲面展示,所有资源完全承接上一篇内容。 2.5 创建一个涟漪效果先来看一下最终要实现的效果图 我们一步一步来实现这个效果。首先,要创建一个基于到原点距离正弦波。而这个距离,我们使用毕达哥拉斯定理也就是勾股定理 $a^2 + b^2 = c^2$ 。对于这个效果来说,我们是基于XZ坐标来求Y坐标的,所以也就是 $\sqrt{x^2 + z^2}$ 。

使用 Unity 实现漂亮的数学曲面(上)

这篇博客是上一篇 使用Unity3D展示Sin函数动画 的续篇,在上一篇的基础上,来实现更复杂的效果。在文章最后会有完整的 C# 代码和 Shader 代码,先来看一下最终的效果图 由于篇幅太长,所以将分为上下两部分,现在开始第一部分的内容。

哈希

今天我们来聊一下哈希(Hashing),有时候也被称为散列。简单来说,哈希是一个唯一标识,用于标识一个东西。例如,一个人的身份证号就可以称为一个哈希,通过一个身份证号,可以定位到某一个人的信息。一个人的名字,也可以用作哈希,不过这个可能会产生重复,因为有很多人重名,这样导致的问题就是,通过名字,可能定位到多个人的信息,这种情况叫做哈希碰撞。

使用Unity3D展示Sin函数动画

今天我们要实现的东西,就是下面这个动图的效果。使用代码控制方块的坐标,来展示 Sin 函数。方块的颜色变化,是随着坐标变化而动态改变的,我们会写一个超简单的 Shader 来实现。 接下来,我们一步一步实现。