- 博客(99)
- 收藏
- 关注
原创 webgl入门(一)
为了在canvas中进行图形绘制,需要经过以下三个步骤1、获取canvas元素2、向canvas元素请求调取绘制接口3、在接口中调用相应绘图函数其实你如果是unity的从业者或者爱好者,这和调用一个物体上的component一样,首先找到canvas物体,然后遍寻上面的组件,找到可以绘制的组件,然后利用该组件进行绘制,很好理解。1、ctx.fillStyle 设置填充颜色2、ctx.fillRect 用上述颜色填充矩形3、ctx.clearColor 指定用于清空的背景色4、ctx.cle
2021-12-21 10:57:20
243
原创 tensorflow中object detection对应的问题 解决方案
之前貌似用的是tensorflow2.2.0跑的,反正用gpu跑的很成功 大约四个小时就能跑出来,但是后来就崩了,但是他崩把 也不告诉你 就是跑不出个结果 我觉得也不是他自己的问题 是我自己想把tensorflow跑出来的结果转成在web端上的那种冻结文件 结果转版本把环境给转坏了后来又试了tensorflow2.6.0 结果训练需要16个小时,把我人搞蒙了,我一看这没用gpu训练啊,反正我后面试了好几次 就是cuda11不行 我这边跑着跑着就崩 python就abort啥玩意的 我就换了tensorf
2021-11-30 13:29:21
1422
原创 Transparent和Fade的区别
在shader中对于transparent来说,比较适合玻璃等材质的渲染而对于Fade来说,比较适合消隐材质
2021-03-22 13:44:07
642
转载 shader基础知识之TRANSFORM_TEX和_MainTex_ST
我们在变量声明中是float4 _MainTex_ST_MainTex_ST.xy对应的是tiling 复制粘贴_MainTex_ST.zw对应的是offset 位移我们拿序列帧来举例 在一个贴图上有很多小的贴图在unity中我们将tiling的uv设置为0.5 0.5移动offset中的uv值,实现序列帧的移动而TRANSFORM_TEX则是拿顶点的uv和材质球中的tiling和offset作运算,确保材质球中的缩放和偏移是正确的v.uv是顶点的uv在vert函数中,o.u
2021-01-27 15:59:03
1159
转载 坐标旋转公式
首先我们的目的是求出C点的坐标(c,d),已知的关系是半径相等,因此我们可以得出c=xcos(β)-ysin(β)d=ycos(β)+xsin(β)
2021-01-26 16:40:30
591
转载 unity中的阴影
ShadowMap技术原理是,将摄像机与光源的位置重合,场景中光源的阴影位置就是摄像机看不到的位置。在forward rendering path中,场景中最重要的平行光在forwardbase中默认是开启了阴影的,unity就会为该光源计算其shadowmap(阴影映射纹理),这张纹理的本质也是一张深度图,这张深度图上的信息记录了,从光源的位置出发,能看到的场景中距离它最近的表面的信息。为了得到这张shadowmap我们按照正常的流程应该是调用Base pass和Addition Pass来更新深度信
2020-12-22 18:02:27
1122
原创 帧调试器(Frame Debugger)
从上图可以看出,unity渲染这个场景总共进行了6个渲染事件,因为场景中只有一个物体,因此这6个渲染事件都是用来渲染该物体的光照结果。Event1:Clear 首先清除颜色、深度和模板缓冲Event2: DrawMesh 利用第一个pass,ForwardBase将平行光的光照渲染到帧缓存中。Event3——6:使用shader中的第二个pass,AdditionalPass依次将四个点光源的光照应用到物体上,得到最后的渲染结果。...
2020-12-22 11:56:06
542
原创 光源类型
光源有5个属性:位置、方向、颜色、强度和衰减1、方向:_WorldSpaceLightPos02、颜色和强度:_LightColor0(此变量已经是颜色和强度相乘后的结果)3、衰减:平行光没有衰减Unity处理这些光源的顺序取决于其重要程度...
2020-12-22 11:16:19
202
原创 渲染路径之forward rendering path
unity相机支持多种渲染路径主要有三种:forward rendering path、deferred rendering path和vertex rendering path而shader中的lightMode有:1、Always:不管使用哪种渲染路径,该pass总会被渲染,但不会计算任何光照2、ForwardBase:该pass会计算环境光、自发光和最重要的平行光(场景中最亮的平行光),和逐顶点的光源和SH光源3、ForwardAdd:该pass会计算额外的逐像素光源,且每个pass对应一个光
2020-12-16 15:38:34
290
原创 几何着色器
对于tessellation着色器而言,输入的是patch,然后设置tessellation factor,但是对于patch只能生成顶点,不能遗弃其中的patch。而geometry shader可以访问一个图元的所有的点,可以改变图元的类型,并且可以遗弃图元。...
2020-12-11 11:03:30
106
转载 Tessellation shader
曲面细分包括两个可编程的着色器:曲面细分控制着色器(hull shader)和曲面细分计算着色器(domain shader)曲面细分控制器起到一个数据传递的作用,hull shader做了以下两个工作:1、决定一个patch需要被细分多少次2、对于输入的patch数据需要进行哪种特殊的变形[UNITY_patchconstantfunc(“hsconst”)]中的hsconst是计算factor的方法,在此方法中计算每个边的Tessellation factor和内部的Tessellation f
2020-12-09 14:49:05
610
原创 Deferred Rendering延迟渲染技术
延迟渲染技术是将**着色计算延迟到深度测试之后**进行处理的一种渲染方法。 其优势是将**光源的数目**和场景中**物体的数目**在复杂度层面上完全分开。能够在渲染成百上千光源的场景的同时保持很高的帧率。 在介绍延迟渲染之前我们首先需要提及的就是Forward Rendering,正向渲染是根据所有的光源照亮一个物体,之后再渲染下一个物体。其简单也容易实现。 延迟渲染的原理是:先将所有的物体都绘制到屏幕的缓冲空间(G_buffer)中,然后再逐光源对该缓冲进行着色,这样就避免了因为计算没有...
2020-09-08 17:35:24
310
原创 Shader Stencil
对于每一个像素值来说,其中都会存储一个模板值(像是深度值)模板测试一般指 stencil buffer与自定义的Ref相比较的结果for example:stencil{Ref 2Comp equal//表示通过模板测试的条件,Pass keepFail decrWarpZFail keep}...
2020-09-08 15:45:07
559
原创 屏幕后处理根据深度纹理构建每个像素在世界空间的位置
1、首先我想先看一下左手坐标系和右手坐标系,他俩的区别在与z轴的方向是相反的(大拇指是x的方向,食指是y轴的方向)2、正文:原理:利用深度纹理和当前帧的视角*投影矩阵的逆矩阵来求得当前像素在世界空间的坐标。// Get the depth buffer value at this pixel.//从深度纹理图中得到当前像素点的深度float d = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, i.uv_depth);// H is the viewport
2020-06-20 15:06:14
496
原创 Shader描边效果总结
这篇是总结篇,也不是什么解析,就是为了我自己到时候找的时候方便嘿嘿嘿~添加链接描述(原文)描边效果的实现是,在正常模型的渲染状态下,在模型外面扩展出一个描边效果。总结下来就是有两个pass,其中一个pass可以把另一个pass包住,想法是让模型的形状像外扩,因此是要在vert函数中进行更改。v2f vert(appdata_full v) { v2f o; //在vertex阶段,每个顶点按照法线的方向偏移一部分,不过这种会造成近大远小的透视问题 //v.vertex.x
2020-05-14 09:45:52
645
1
原创 shadertoy知识点小总结20200512
今天是汶川地震12周年,其实早上来的时候我并不知道,是我同事和我说我才知道的。今天感觉很疲惫,但还是想总结一下,毕竟我这个金鱼的记忆力是靠不住的。1、首先是几个函数的总结(1)step函数:这个函数我其实见过很多遍了,但是我老是记不住,step(a,x)当x<a时 函数为0,其他情况函数为1(2)floor函数:成为阶梯函数,向下取整函数,取得当前小于或者等于x值的整数,需要注意的是,floor(-2.2)=-3 floor(2.2)=2(3)fmod函数:取余函数 一开始对于这个函数是一
2020-05-13 14:56:38
453
原创 彩色光圈shader完全剖析
http://blog.csdn.net/stalendp/article/details/40690185Shader "shadertoy/TotalNoob" { //https://www.shadertoy.com/view/XdlSDs Properties{ iMouse ("Mouse Pos", Vector) = (100,100,0,0) iChannel0("iChannel0", 2D) = "white" {} iChannelResolution0 ("i
2020-05-12 15:26:20
301
原创 Shader实例分析之彩色光圈之值域分析
Shader实例分析之彩色光圈https://blog.csdn.net/stalendp/article/details/40690185链接如下,我在这里想总结的是其中一个值域的分析。Shader "shadertoy/TotalNoob" { //https://www.shadertoy.com/view/XdlSDs Properties{ iMouse ("Mouse Pos", Vector) = (100,100,0,0) iChannel0("iChannel0", 2D
2020-05-10 19:57:10
215
原创 Shader中两物体叠加来回闪烁的问题
https://blog.csdn.net/linjf520/article/details/94596104这篇博文其实讲的很清楚啦,但是因为自己看嘛~我想写的清楚一点,假如两个物体叠加在一起有闪烁情况,是因为他们公用了一个z,因此在shader中可以将其z修改。Properties { _OffsetFactor("Offset Factor", Float) = 0 _OffsetUnits("Offset Units", Float) = 0 } SubShader {
2020-05-10 13:12:20
605
原创 实现透明不透并且和原standard shader效果一样但没有阴影而且可以在手机端用刚才发现一个bug就是在电脑端看使用这个shader的会有金属光泽来回变
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)Shader "aya/Standard"{ Properties { _Color("Color", Color) = (1,1,1,1) _...
2019-07-30 09:56:44
423
翻译 飞行棋代码
三个脚本 GameControl Dice 和 FollowThePath首先是FollowThePath脚本 public class FollowThePath : MonoBehaviour { public Transform[] wayPoints; [SerializeField] private float moveSpeed = 1f; ...
2019-07-22 15:52:46
2584
2
原创 脚本调用
开始做切水果项目啦~脚本互调:public static ObjectPoolScript current; public void Awake() { //sets the static reference to "this" instance of the script. current = this; }...
2019-06-03 16:58:19
163
原创 枚举的使用
其实概念我都懂但是就是不知道咋用枚举我懂得用过一次就是在我想在inspector面板上的时候我如果想有下拉框,就需要[SerializeField]private DotweenType _dotweenType = DotweenType.MovementOneWay;private enum DotweenType{ MovementOneWay, Movement...
2019-05-09 13:34:32
91
原创 按钮点击的接口
using UnityEngine;using UnityEngine.EventSystems;using System.Collections;/// 脚本位置:UGUI按钮组件身上 /// 脚本功能:实现按钮长按状态的判断 /// 创建时间:2015年11月17日 /// // 继承:按下,抬起和离开的三个接口 public class OnButtonA :...
2019-05-08 17:13:16
1566
原创 数据存档
首先写一个脚本 GameData在内写数据的模板 ,因为数据不止一条 因此要写一个list来存这些模板 [Serialization] //这是自己定义的模板 public class GameData{ public string PeopleName; public List<Vector3> pos; } ...
2019-05-08 16:55:47
421
原创 把string分成Vector3的x,y,z
string v = “0,2,3”;//用分隔符将string分割成数组string[] vs = v.Split(’,’);Vector3 v3 = new Vector3();//然后强制类型转换v3.x = int.Parse(vs[0]);v3.y = int.Parse(vs[1]);v3.z = int.Parse(vs[2]);...
2019-05-07 17:10:38
521
转载 按钮增加点击事件
void Start() { //找到按钮,并且获取按钮的Button组件 Button btn = GetComponent<Button>(); //注册按钮的点击事件 btn.onClick.AddListener(delegate () { Ball(); }); ...
2019-05-06 17:26:11
929
转载 float.ToString()输出小数但不四舍五入
下面代码的输出竟然是2.0:float a=1.95f;Debug.Log(a.ToString(“0.0”));如果想截取一位小数,可以:float a=1.95f;float t_a=Mathf.Floor(a*10)*0.1f;Debug.Log(t_a.ToString(“0.0”));...
2019-05-06 15:57:40
2683
转载 倒计时
using UnityEngine;using UnityEngine.UI;using System.Collections;public class timer: MonoBehaviour{ public float timer = 3;//倒计时几秒 public GameObject t;//画布下的文本框 // Use this for initiali...
2019-05-06 15:49:47
196
转载 物体跟随鼠标位置
我一开始做的时候就是不跟随我也不知道哪里不对,后来发现原来是应该把相机的projection调为正交模式,在正交模式下物体没有远近之分,比较适合做2D游戏我们当然可以直接让物体的位置等于鼠标的位置但在这里有两点需要注意,第一点就是他们两个的坐标系不一样,鼠标的坐标是屏幕坐标,以左下角为原点,而世界坐标,以世界的中心为原点,因此我们将鼠标的位置转换为世界坐标的位置Input.mouseP...
2019-05-06 15:32:24
727
转载 最长距离限制
矢量和标量的限制private void DistanceRestrict() { if(Vector3.Distance(transform.position,lightPos.position)>maxDis)//maxDis是标量 { Vector3 pos = (transform.position - lightPo...
2019-05-06 14:35:06
188
转载 随机寻路
public class RandomNav:MonoBehaviour{ private NavMeshAgent agent; public Transform point; private float RandomTime; void Start() { agent=GetComponent<NavMeshAgent>(); point.po...
2019-04-29 15:00:46
207
转载 把数据写入本地
void JudgementOrCreate() { if (File.Exists(Application.persistentDataPath + "/RankingList.txt")) Debug.Log("已有文件"); else File.Open(Appli...
2019-04-29 13:24:57
249
转载 计分排行榜
using System;using System.Collections.Generic;using System.IO;using UnityEngine;using UnityEngine.UI;namespace Assets.Scripts{ public class RankScore : MonoBehaviour { //如果我们想要清...
2019-04-29 13:11:18
124
转载 使生成的物体成为一个物体的子物体
private Transform _scoreDataParent;void Awake(){_scoreDataParent = GameObject.Find("/Canvas/ScoreRankList").transform;}void InstantiateGo(){for (int i = 0; i < _scoreDataList.Count; i++){...
2019-04-27 16:59:59
579
转载 动态加载本地图片
public class WWWTest : MonoBehaviour{ RawImage oldimg ; public Text _text; // Use this for initialization void Start() { oldimg = GetComponent<RawImage>(); ...
2019-04-27 14:38:21
373
原创 项目内相机截图
using UnityEngine;using System.IO;using UnityEngine.UI;public class Test : MonoBehaviour{ public Text _text; // Use this for initialization void Start() { } // Update is ...
2019-04-27 14:10:57
122
转载 相机不是你想要的主相机的时候
这个时候是因为depth高的相机把depth低的相机覆盖了,这个时候只要你把clear flag选成dont clear就可以了,因为这样时候其他相机渲染的内容你不清除,就可以看到depth低的相机的内容了。当只有一个摄像机的时候,depth这个值没有意义,clear flag中的depth only的意思是,当我们选择这个选项的时候我们意思是,我们depth高的相机的未渲染内容取决于深度,也...
2019-04-27 11:36:58
115
转载 unity相机渲染顺序
图形的渲染顺序就是先绘制depth低的相机下的物体,再绘制depth高的相机下的物体,也就是说,depth高的相机会覆盖depth低的相机(具体的覆盖关系有don’t clear, solid color等等几种)也就是说0层会覆盖-1层随便找一个可以设置sorting layer的地方,选择sorting layer,点添加按钮,就可以看到当前所有的sorting layer,并且可以更改s...
2019-04-27 11:24:49
2631
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人