自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 资源 (4)
  • 收藏
  • 关注

原创 C++ 函数参数何时用引用何时用指针

函数参数使用引用、指针还是值传递的指导规则。

2022-10-30 21:44:17 1999

原创 Git基础及常用命令

讲述了Git的一些基本工作原理,介绍了Git中常用的一些命令,解释了快速合并、3路合并以及变基的原理。

2022-06-18 16:24:18 974 1

原创 Git工作流(分支管理规范)

Git工作流程、Git分支管理详细说明。

2022-06-11 12:26:56 933

原创 Unity3D Shader系列之模板测试

1 引言前面3篇文章详细总结了深度纹理相关的知识,可以文中可以看出,在Unity中使用深度纹理及其简单。但是我们为什么仍然在这3篇文章中花了大量的篇幅去说明深度纹理的底层知识呢?因为只有知道了底层的数学和原理,才能举一反三,才能心里有底。在学习建立在该原理上的新技术的时候,才能一点也不吃力。不论是计算机图形学还是CPU端的性能优化,本质的东西都是几十年不变的。只有夯实了基础,才有建高楼的可能。只有知道了本质,我们才知道如何去优化我们的代码,让其运行得更加地高效。才能写出自己真正感到满意、感到欣赏的代码。

2022-05-23 08:00:00 3822 4

原创 Unity3D Shader系列之深度纹理重建世界坐标

详细介绍了在屏幕后处理阶段如何使用深度纹理重建世界坐标。

2022-05-15 13:40:50 2122 4

原创 Unity3D Shader系列之护盾效果

目录1 引言2 代码实现2.1 原理分析2.2 代码分析2.2.1 获取深度纹理2.2.2 使用视口坐标对深度纹理采样2.2.3 获取当前像素的深度值3 完整代码4 参考文章1 引言在《Unity3D Shader系列之深度纹理》这篇文章中,我们详细讨论了深度纹理相关的知识点,这里面留了一个坑,说用深度纹理来实现一些效果。今天咱们就用深度纹理来实现一下护盾的效果。注意,看这篇文章之前一定要将深度纹理的知识弄清楚,这样才能看懂Shader中的代码。效果如下。2 代码实现2.1 原理分析护盾效果的

2022-04-23 23:05:28 3468 1

原创 Unity3D Shader系列之深度纹理

详细解释了深度纹理存储的内容,给出了OpenGL与DirectX平台下的裁剪矩阵,推导了获取线性深度值的公式,详细介绍了深度值精度问题出现的原因以及为什么Reverse Z可以解决此问题,并给出了Unity中实现场景扫描的实现。

2022-04-21 21:25:31 6319

原创 Unity3D Shader系列之描边

参考文章Unity Shader-描边效果Outline Shaderoffset的作用Unity Shader 中 Offset 设置的作用Shader Depth Offset [Polygon Offset][OpenGL][SharpGL]用Polygon Offset解决z-fighting和stitching问题

2022-04-10 22:15:18 13527 3

原创 Unity3D Shader系列之全息投影

1 效果展示2 实现原理①使用视口坐标对扫描纹理采样②根据扫描纹理clip掉相应部分③叠加边缘光④顶点偏移3 源码4 参考文章https://sharpcoderblog.com/blog/create-a-hologram-effect-in-unity-3d[UnityShader]使用shader产生全息投影的效果Unity从零开始实现一个全息效果Shader...

2022-04-05 00:18:48 5024 1

原创 Unity3D Shader系列之透视效果XRay

Shader实现透视效果,X光效果。

2022-03-26 22:31:36 8453 4

原创 Unity3D Shader系列之边缘光RimLight

1 引言这一两个月会花一点时间来集中总结下用Shder实现的效果。其实我一直在想为什么自己将渲染流水线、坐标变换这些弄得非常清楚了,但看到某种效果的时候,依然不知从何下手?现在觉得最主要的原因是自己对实现这种效果的算法的知识是欠缺的。因为每种效果用到的算法是都是不一样的,不是说自己把这种效果弄懂后就能迁移到另外一种效果。说白了没有系统性的看过书,系统看过书之后,看到某种效果就能大概知道它底层的原理是什么,原理知道了写Shader相对来说就是简单的事情了。所以来总结下一些常用的效果,以便后面查阅。2 原理

2022-03-20 22:48:37 5994 2

原创 Unity3D Shader系列之渲染流水线

1 引言硬盘上的一个3D模型模型是怎么渲染到我们的屏幕上来的呢?答案是经过渲染流水线。完整的渲染流水线包括3个大阶段,应用阶段→几何阶段→光栅化阶段。每个大阶段又分为几个小阶段。下面我们来看看整个渲染流水线过程。2 应用阶段应用阶段分为3个小步骤:①加载模型数据到显存②设置渲染状态③调用Draw Call2.1 加载模型数据到显存先是CPU将模型数据加载到内存中,模型数据包括模型的网格数据(包括顶点的局部坐标、顶点的法线、顶点颜色以及顶点的纹理坐标等)、法线、材质、贴图等。然后GPU将这

2022-03-19 23:47:39 4508

原创 Unity3D C#数学系列之变换矩阵推导

1 仿射变换与齐次坐标《Unity3D C#数学系列之矩阵基础》中我们说到一个4×4的矩阵可以用来对三维空间中的点或向量进行各种变换,包括平移、旋转、缩放(当然还有错切、镜像等,由于我工作中这几种从来没用过,所以这里就不说这两种变换了)以及这几种变化的组合。这些变换有一个统一的名字,叫做仿射变换。三维空间中,只要是仿射变换,就可以用一个4×4的变换矩阵来表示。但是为什么变换矩阵一定是4×4的呢,3×3行不行?答案是不行。如果不考虑点的平移,只考虑向量或点的旋转、缩放,3×3的矩阵就可以了。但如果考虑点的

2022-01-03 00:20:31 3741 1

原创 Unity3D C#数学系列之矩阵基础

1 矩阵的作用矩阵的作用非常大,但是在Unity中,矩阵最重要的一个作用其实就是将一个点从一个位置变换到另外一个位置。举个例子,世界坐标系下有一点A,点A

2021-12-26 22:40:15 4900

原创 Unity3D C#数学系列之叉积

向量叉积的定义、几何意义、性质与使用案例。

2021-12-11 22:29:08 3696

原创 Unity3D C#数学系列之点积

1 定义2 几何意义如果b⃗\vec{b}b为单位向量,则表示向量a⃗\vec{a}a在向量b⃗\vec{b}b上的投影。3 a⃗\vec{a}a·b⃗\vec{b}b = xa xb+yayb+zazb上面这公式是怎么来的?设根据余弦定理有所以4 应用案例4.1 求两向量的夹角已知向量根据点积的定义,则有4.2 判断两向量是否垂直两向量垂直时,两者夹角为90°,而cos90° = 0,故a⃗\vec{a}a·b⃗\vec{b}b =0。换句话说,只要a⃗\vec{

2021-11-28 00:03:21 4779 1

原创 Unity3D C#数学系列之三角函数

目录1 定义2 常用公式推导2.1 sin²θ + cos² = 12.2 sinθ = cos(90°-θ)、 cosθ = sin(90°-θ)2.3 sin(-θ) = -sinθ、 cos(-θ) = cosθ2.4 sin(90°+θ) = cosθ 、cos(90°+θ)=-sinθ2.5 余弦定理2.6 正弦定理2.7 cos⁡(θ-β) = cosθ*cosβ + sinθ*sinβ3 三角函数图像性质4 Unity中三角函数常用到的地方1 定义三角函数的定义:在一个平面直角坐标系中,

2021-11-20 21:48:51 5001 2

原创 Unity Bug:Incompatible min precision type for operand #1 of opcode #39 (counts are 1-based).

打包时提示报错Shader error in ‘Sprites/Diffuse-HueShift’: Program ‘frag_surf’, error X8000: D3D11 Internal Compiler Error: Invalid Bytecode: Incompatible min precision type for operand #1 of opcode #39 (counts are 1-based). Expected int or uint. (on gles3)在编辑

2021-11-19 10:30:22 2605

原创 C++、C#知识点 Dll的生成与调用

1 引言上周做了下C++生成Dll的总结,但是有些地方还是没有弄特别清楚(比如调用约定的区别,extern "C"的意义),所以这里再重新总结一遍。2 Dll的导出先创建一个空项目,空项目意味着我们可以从零开始一步一步配置环境,了解生成dll的整个步骤。(熟悉之后可以创建一个动态链接库(DLL)的项目,这样VS背后会帮我配置好环境,我们只需写代码就行了)2.1 设置项目属性右键项目》属性》常规设置目标文件扩展名为.dll,配置类型为动态库(.dll),字符集设置为使用Unicode字符集。

2021-11-14 21:01:15 7990 4

原创 Unity3D C#之IL2CPP Windows端隐藏任务栏图标并添加至托盘

1 引言在这篇文章中,我们实现了点击最小化和关闭菜单将程序隐藏到任务栏的功能,但是这篇文章需要额外一个winform程序来处理任务栏的功能,有没有方法可以不需要依赖其他程序也能实现这个需求呢?当然有的,使用Windows系统提供的API就行了。我们先来看看完全依靠调用Windows提供的API实现的效果。...

2021-11-06 22:33:43 4473 9

翻译 [译]Unity3D Shader教程(八)Planar Mapping

原文链接:Shader Tutorials by Ronja1. Summary概要。有时候我们的网格数据中并没有UV坐标,或者我们想让多个模型的纹理对齐,或者还有其他什么原因,我们需要动态生成UV坐标。那么接下来的教程,我们将以最简单的方法,二维平面映射,来生成我们的UV坐标。本教程是在上一个图片着色器的基础上实现的。但是你也可以在任何表面着色器上使用这种方法。2.Basics首先我们将输入结构体中的uv变量删除掉,因为我们打算通过脚本生成。struct appdata{ f.

2021-10-17 11:10:57 260

原创 C++知识点 生成与使用dll

1. Dll的导出1.创建空项目2.项目》属性》常规》配置类型 选择 动态库.dll3.写代码头文件mathTool.h#pragma once#ifdef MATH_API#define DLL_API __declspec(dllexport)#else#define DLL_API __declspec(dllimport)#endif//函数描述:对两个int变量进行求和。//返回值:求和后的int值DLL_API int add(int a, int b);

2021-10-08 17:17:08 723

翻译 [译]Unity3D Shader教程(七)Sprite Shaders

原文链接:Shader Tutorials by Ronja1. Summary概要。在 unity 中,精灵的渲染方式与 3d物体的渲染方式非常相似。 大部分工作由精灵渲染器(Sprite Renderer)组件完成。 我将稍微介绍一下组件正在做什么以及我们如何更改着色器以执行默认精灵渲染器正在执行的一些操作。本教程将建立在我们之前制作的透明着色器的基础上,因此您最好先了解它。2. Scene Setup场景设置。为了使用Sprite Shader,我将场景更改得更简单,使用正交相机.

2021-09-12 21:51:19 2367

翻译 [译]Unity3D Shader教程(六)Basic Transparency

原文链接:Shader Tutorials by Ronja除了只是在屏幕上绘制颜色之外,我们还可以保留一些以前在屏幕上的颜色,使物体看起来透明。 我将解释我们如何在没有照明的基本着色器中实现这种效果。要了解如何实现透明度,我建议您了解编写着色器的基础知识,如果没有这方面的知识建议先看之前的教程。本篇的Shader是在《[译]Unity3D Shader教程(四)Basic Shader》中Shader的基础上修改的。为了使透明物体正确渲染,我们必须告诉 unity 此物体是透明的。 我们通过.

2021-08-14 13:02:43 284

翻译 [译]Unity3D Shader教程(五)Surface Shader Basics

目录1 Summary2 Conversion to simple Surface Shader3 Standard Lighting Properties4 Implement a few Lighting Properties5 Minor Improvements原文链接:Shader Tutorials by Ronja表面着色器基础。1 Summary概要。除了几乎从头开始编写着色器之外,unity 还允许我们定义一些参数并让 unity 生成执行复杂光计算的代码。 这些着色器称为

2021-08-05 11:00:42 394

翻译 [译]Unity3D Shader教程(四)Basic Shader

原文链接:Shader Tutorials by Ronja1 概要在前三个教程中,我解释了让Shader工作的一些基础部分。 在这一部分中,我将向您展示如何填写其余部分。我没有展示的主要内容是实际执行的代码。 那是因为您一开始不需要太多代码来运行着色器,而且所有花哨的代码都在专门的教程中。2 What we have so far到目前为止我们所知道的。下面Shader中的所有部分再前三个教程中的某一个都有解释。 如果您有其他想法,请随时告诉我。Shader "Tutorial/00.

2021-08-05 10:59:49 264

翻译 [译]Unity3D Shader教程(三)变量

目录1 Summary2 Object Data3 Interpolators4 Output color5 Uniform data6 Spaces?7 Sources原文链接:Shader Tutorials by Ronja1 Summary概要。在明确了着色器部分是如何组合在一起的,以及在实际着色器代码之外的 shaderlab 的粗略轮廓之后,我们来看看我们的着色器需要哪些变量来运行,以及如何将这些变量添加到我们的代码中。这些变量包括我们为每个材质设置的变量、网格数据变量的一部分以及

2021-06-20 17:36:56 422

翻译 [译]Unity3D Shader教程(二)HLSL

目录1 HLSL?2 Builtin Types3 Vector Values4 Matrix Values5 Textures6 Math7 Custom Types8 Variables9 Functions10 Control Flow10.1 if statements10.2 Loops原文地址Shader Tutorials by Ronja。1 HLSL?HLSL(High Level Shading Language,高级着色器语言)是Unity用来编写着色器的语言,其用来自定义

2021-06-13 23:19:22 2864

翻译 [译]Unity3D Shader教程(一)ShaderLab结构

很久没更新博客了,这段时间有点忙。本来一直想写总结一下怎么写Shader,但是的确是心有余而力不足(一是能力不够,二是工作真的太忙了,每天回来大脑都是用脑过度的状态)。自己写不出来,但好在有大佬写了很不错的Shader教程,就决定翻译一下。大佬原文Shader Tutorials by Ronja。下面进入正文。1 Shader结构在用Shader实现出我们想要的效果前,我们需要先知道Shader代码的基本结构(就像我们用C#编程需要先知道C#的语法一样)。大多数现代着色器都有一个可变的渲染管线.

2021-06-06 20:59:22 856

原创 Unity3D C#数学系列之坐标系之间的变换

目录1 引言2 坐标变换2.1 结论2.2 示例1 引言工作中经常要进行各个坐标系之间的相互转换,比如要将Oxyz坐标系中的点变换到O’x’y’z’坐标系下,这就涉及到两个坐标系之间的变换矩阵问题。当然两个坐标系之间的变换矩阵是有公式的,比如Oxyz绕x轴旋转θ角后得到O’x’y’z’,则Oxyz到O’x’y’z’的变换矩阵为(需要注意的是,本文说的旋转都是按照左手法则来定义方向的,如果使用的是右手坐标系,下面结论中的sinθ的符号会是相反的)再比如Oxyz绕y轴旋转θ角后得到O’x’y’z’

2021-03-21 20:57:38 1222 1

原创 Unity3D UGUI系列之自定义圆形按钮

目录1 效果展示2 分析3 项目4 参考文章1 效果展示只在圆形区域内点击有效。2 分析参照UGUI源码中的Image,创建一个子类继承自MaskableGraphic重写OnPopulateMesh方法,创建圆形图片的网格(UGUI控件的本质是网格,这点可参考之前的博客《Unity3D UGUI系列之合批》)实现ICanvasRaycastFilter接口,用来过滤掉圆形区域外的点击3 项目项目链接:https://pan.baidu.com/s/1VBHjsIrlTInb8Qxd

2021-03-07 22:11:47 2408

原创 Unity3D C#数学系列之判断两条线段是否相交并求交点

1 引言问题:已知三维空间中四点A、B、C、D,如何判断线段AB与CD是否相交,若相交则求出交点。分析:AB、CD要相交,则AB、CD必须要在同一平面内快速排斥和跨立实验判断是否相交几何法分析求出交点2 求解2.1 AB、CD是否共面要判断AB、CD是否共面,其实就是判断A、B、C、D四个点是否共面。我们知道三点确定一个平面,如果AB垂直于ACD三点所在平面的法线,则说明A、B、C、D四点共面。A、C、D三点所在平面的法线怎么求?很简单,两个向量的叉乘就是这两个向量所在平面的法线。

2021-03-03 22:41:11 5759 9

原创 Unity3D之Windows端隐藏任务栏图标并添加至托盘

1 基本效果基本功能:点击关闭,不直接关闭,缩小到托盘托盘图标上可打开、隐藏和关闭程序效果展示:2 代码实现2.1 思路两个程序,Unity一个程序,winform一个程序winform程序用来生成托盘图标,并且控制Unity程序的最大、最小化及关闭Unity程序需要监听到鼠标点击标题栏右上角最小化和关闭事件winform程序需要单例运行(同一时间只允许一个程序允许)Unity程序启动时,同时启动winform程序2.2 实现2.2.1 Unity程序监听最小化和关闭事

2021-02-28 22:10:07 3472 1

原创 Unity3D UGUI系列之合批

详细介绍了UGUI合批的规则及原理,并给出了Demo分析。同时,附带介绍了Frame Debugger和Profiler UI怎么使用。

2021-01-16 22:21:00 17246 30

原创 Unity3D Shader系列之几何着色器基础

1.什么是几何着色器最近一直在练习写Shader,发现用几何着色器可以写出特别酷炫的效果。于是去学习了一下,这里做个总结以备查阅。几何着色器位于渲染流水线的几何阶段,在顶点着色器与片元着色器之间。备注:图片来源于冯乐乐的《Unity Shader入门精要》p9其在Shader中是可选的,完全可编程的。顶点着色器是以顶点数据(局部坐标、法线方向、纹理坐标等)做为输入,然后输出齐次裁剪空间下的顶点坐标、顶点颜色以及其他阶段需要的信息。每个顶点都会调用一次顶点着色器。顶点着色器不能够创建和销毁任何顶点

2020-12-19 15:43:58 2753 1

原创 Unity3D Shader系列之中常用内置变量与方法

目录1 常用变量1.1 顶点着色器输入结构体体1.2 _LightColor01.3 _WorldSpaceLightPos01.4 UNITY_LIGHTMODEL_AMBIENT1.5 unity_ObjectToWorld1.6 unity_WorldToObject2 常用方法2.1 局部坐标变换到裁剪空间2.2 模型空间法线变换到世界空间2.3 TRANSFORM_TEXTODO 未完待续…1 常用变量1.1 顶点着色器输入结构体体位于UnityCG.cginc。struct appd

2020-12-14 23:16:20 834

原创 Unity3D Shader系列之画虚线方式分析与总结

总结了一下几种画虚线的方式。①使用LineRenderer②代码生成网格画虚线③使用片元着色器画虚线④使用几何着色器画虚线⑤使用UILineRenderer⑥使用Vectrosity插件

2020-12-06 22:23:22 4895 2

原创 Unity3D Shader系列之UI流光效果

流光贴图+遮罩贴图与纯计算两种方式实现流光效果。

2020-11-28 22:55:05 7263 1

原创 Unity3D Shader系列之Compute Shader基础及图像灰度化

前两篇我们分别用OpenCV for Unity和片元着色器实现了图像灰度化的功能,今天我们来看看使用Compute Shader实现图像灰度化的功能。1.什么是Compute Shader2.Compute Shader的优缺点3.参考文章Unity Compute Shader入门初探Unity 3D : ComputeShader 全面詳解Compute Shader次世代优化方案Shader第二十八讲 Compute Shaderspuppet_master...

2020-11-22 00:41:39 3122

原创 Unity3D Shader系列之圆环

效果如下。很简单,核心代码就下面这两句。原理就是通过计算当前uv与图片中心的距离是否在内环(_InnerRadius)和外圆(_OuterRadius)之间,若是,则将透明度置为1,若不是,则将透明度置为0。fixed dis = distance(IN.texcoord, fixed2(0.5, 0.5));color.a = step(_InnerRadius, dis) * step(dis, _OuterRadius);代码中没有使用if…else…来判断,而是使用了两个step方法,这

2020-11-14 17:24:22 1685

CameraController.rar

完整模拟scene视图的操作,包括相机的拉近拉远、缩放、拖拽、以及聚焦。 1. 正交/透视视图的缓动切换 2. 滚动鼠标滚轮能够拉近、缩远 3. 按住鼠标中键能够上下左右拖拽相机 4. ALT+鼠标左键 或 按住鼠标右键 可360查看场景 5. 正视图、左视图、俯视图等 6. 按住F能够聚焦物体 7. ALT+鼠标右键 拖动鼠标能够放大缩小视角 8. 选中物体后,按住Shift+F,相机会一直跟随物体 这里实现了1~7,8没实现。

2020-03-14

Chart and Graph 1.6

Chart and Graph1.6,最新版,目前最好用但是也是最贵的Unity3D图表制作插件!谁用谁知道!

2019-08-10

labview计算器

基于labview的简易计算器。能实现连加,连减,连乘,连除,还可实现取倒,取反,开根等。另外本计算器最大的优点就是可以实现等式的输出。

2015-01-24

LABVIEW红绿灯

基于labvie的红绿灯。可实现倒计时功能,适合初学学习参考。

2015-01-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除