- 博客(40)
- 收藏
- 关注
原创 《游戏:资源从美术到真机》
文章目录#《游戏:资源从美术到真机》ui:音效:模型:shader:icon图片:字体:场景:特效:动画资源、材质球资源各岗位工具流(策划、美术、程序)美术岗位细分资源流程五大步资源流程五大步——同步(美术资源至程序目录)资源流程五大步——打包(美术资源至程序目录)资源流程五大步——发布(将打包的资源发布到服务器成为最新版本)资源流程五大步——更新(资源从服务器热更下载到本地)资源流程五大步——加载(资源本地加载到游戏界面)#《游戏:资源从美术到真机》上一节,讲了游戏从启动到登录页,经历的过程。这一节
2022-05-07 17:19:42 912
原创 URP-官网学习记录
URP-后整理Post-processing使用的是Volume framework做支持。效果展示未加后处理:加了后处理之后:可以看到,加了之后,效果更好。特别是光影。没有那种泛白的感觉。当然这只是对于这个电影而言。它只是使用了后处理效果的一部分。使用步骤1、先添加Volume组件2、添加配置文件1、增加具体的后处理效果对移动设备友好的效果Volume作用范围分为Global与local。Global模式,对全局生效。local模式,可以指定范围,且可以指定位置
2021-11-09 10:15:01 4128
原创 性能优化学习记录
----2021.10.27–项目优化如果没做好,会导致应用运行起来不流畅,掉帧,体验差。所以项目优化也是比较需要学习的点。–分析工具:–针对安卓:Snapdragon Profiler–针对IOS:Instruments 和 XCode Frame Debugger–关于性能分析–, 分启动时、运行时、解析脚本、资源加载四个方面的消耗。–启动耗时 分析:–启动时函数1:如果UnityInitApplicationGraphics耗时长,表示Resources文件夹中文件数量过多。因为此方法在
2021-10-28 00:06:43 224
原创 unity运行时 修改值后,保存值的方法
开始:前情:unity运行时修改了物体的值,在停止游戏后, 值会被恢复到修改前。矛盾:在unity 运行时状态 调试游戏效果时,作者会希望把调试的效果保存下来。 以前最简单的方法是手动记录下值,停止游戏后,再对物体填写新参数。 或者先copy:,再paste这两种方法在面对修改量比较大时,会较为低效,易出错。曙光:1、运行状态下将要保存的修改拖拽到Project视图中2、拖拽预设回场景中的源对象会有提示,确定即可结束:结果经过测试,参考来自文档:采用Unity快速开发高质量
2021-03-29 13:25:52 5176
原创 屏幕后处理-运动模糊(通过像素速度)
效果思路在相机上挂脚本,获得参数: 模糊程度、前一个视角投影矩阵、当前视角投影矩阵的逆矩阵,传递给到shader中shader中,先对深度纹理采样,得到深度值。再通过之前传递的矩阵,得到世界空间中,当前帧改点所在位置与前一帧改点所在位置。 再根据这两个点,求得速度值(也就是上一步求得的两个点的中心点)。使用传入的模糊程度值*速度值,得到新的采样点。将这些采样点求和再求平均值,得到最终点。进行返回。实现c#代码using System;using System.Collections;us
2020-09-25 11:35:05 429
原创 ColorMask-通道遮罩
语法ColorMask RGB | A | 0 | 其他R,G,B,A的组合ColorMask R,意思是输出颜色中只有R通道会被写入ColorMask 0,意思是不会输出任何颜色默认值为RGBA,即四个通道都写入效果总结由此可知,四个参数是可以任意组合的...
2020-09-19 11:44:22 713
原创 屏幕后处理-bloom效果, 使画面中较亮的区域“扩散”到周围的区域
效果使画面中较亮的区域“扩散”到周围的区域,造成一种朦胧的效果。思路对原贴图大于某个阀值的区域进行提取,并缓存到渲染图。再利用高斯模糊,对这张纹理进行模糊处理,模拟光线扩散的效果。最后将其和原图进行混合。实现c#using System.Collections;using System.Collections.Generic;using UnityEngine;public class BloomTest : PostEffectBaseTest { publi
2020-09-18 15:50:29 517
原创 屏幕后处理-高斯模糊
效果思路使用高斯核,进行卷积计算。可简化为使用两个一维的高斯核,做为采样的权重点,对图像先后进行水平与竖直方向的滤波处理。采样点为当前像素点的左右各扩展2个单位,上下各扩展2个单位。可自定义后乘以系数,缩放采样的范围。采样的过程,一般是水平一次,竖直方向一次。可将这个过程进行多次,以达到加强模糊程度的效果。实现c#using System;using System.Collections;using System.Collections.Generic;using UnityEng
2020-09-17 11:34:21 321
原创 屏幕后处理-边缘检测
效果原图渲染图思路如上图所示,使用卷积核,计算屏幕图像每个点的像素和当前点周围的像素,进行卷积操作,可以得到梯度值。主要算法如下: for( int it=0;it<9; it++ ){ texColor = luminance(tex2D(_MainTex,i.uv[it])); //分别对九宫格,九个位置的颜色取样,并计算明亮度 edgeX += texColor * Gx[it];//将X轴方向的九个颜色的明亮度乘以梯度索引,并
2020-09-16 17:36:47 434
原创 shader常见语义
模型→顶点着色器常用语义POSITION :顶点位置NORMAL:顶点法线TANGENT:顶点切线TEXCOORD0-TEXCOORDn(Unity内置结构好像支持到6):顶点纹理坐标COLOR:顶点颜色顶点着色器→片段着色器SV_POSITION:裁剪空间中的顶点坐标 COLOR0:顶点颜色 COLOR1:顶点颜色 TEXCOORDn:纹理坐标 片段着色器输出语义:SV_Target:输出值直接用于渲染了...
2020-09-16 16:31:13 530
原创 屏幕后处理-饱和度,亮度,对比度处理
效果亮度:饱和度对比度思路通过后处理技术,在图片渲染完成后,c#获取得到相机所渲染的区域的图像,通过参数在shader中对其rgb值进一步进行显式处理,将处理的结果再生成目标图形,最后显示出来。实现 shaderShader "Custom/BritnessSiturationConstract" { Properties { _MainTex("_MainTex",2D) = "white" {} _Brightness("_Brightness
2020-09-16 11:14:22 307
原创 顶点动画-广告牌效果
效果转动摄像机时,无论从哪个方向对着物体,会看到物体看起来总是正对着摄像机。思路为了使物体不会随着摄像机的角度的不同,而成像的面向不同。可以使用旋转矩阵,对物体实时进行旋转上的修正。即求得模型空间下,以视角方向做为法线方向,并计算出其他两个坐标方向,up与right,构成一组正交基。再使用它对原顶点进行转换。实现Shader "Custom/BillBoard" { Properties{ _MainTex("MainTex",2D) = "white" {} _Color
2020-09-15 18:00:22 172
原创 顶点动画-水流效果
效果思路1、横向方面,使顶点随着uv做正弦波动,进行“波纹”效果2、纵向方面,使uv的y值随着时间进行累加滚动,形成“流动”效果实现Shader "Custom/Water" { Properties { _MainTex ("Main Tex", 2D) = "white" {} _Color ("Color Tint", Color) = (1, 1, 1, 1) _Magnitude ("Distortion Magnitude", Float) = 1 _Freque
2020-09-15 11:48:26 376
原创 纹理动画,滚动背景
纹理动画,滚动背景效果思路实现效果思路1、取样时,随着时间不断移动uv的x轴,形成动画效果。2、两张图片,前置图片带有透明通道,后置不带,然后按alpha权重进行取样。实现Shader "Custom/ScrollingBackground" { Properties{ _MainTex("BaseLayer",2D) = "white" {} _DetailTex("2ndLayer", 2D) = "white" {} _ScrollX("BaseSpeed
2020-09-14 21:15:25 134
原创 帧动画
原图思路, 按行与列,根据时间在uv中依次取样对应的小图进行渲染即可。效果实现Shader "Custom/ImageSquenceAnimation" { Properties { _Color ("Color", Color) = (1,1,1,1) //颜色修正 _MainTex("Image", 2D) = "white"{} //帧动画主图 _HorizontalAmount ("_HorizontalAmount"
2020-09-14 16:38:18 166
原创 镜子效果
镜子效果效果思路实现效果移动物体时,墙上的“镜子”里的物体一起移动思路1、新建RenderTexture和相机,相机中赋值改renderTexture,进行渲染2、在shader中对renderTexture的ui取样,因为是镜子,镜子是反的,所以对x坐标取 1-x3、将“镜子”物体竖立在合适的位置实现// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Un
2020-09-10 20:22:39 203
原创 高级纹理-菲涅耳反射
菲涅耳反射定义效果思路实现定义当光线照射到物体表面时,一部分发生反射,一部分进入物体内部,发生折射或散射。效果思路近似公式如下:实现// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Custom/Fresnel" { P
2020-09-10 16:34:21 436
原创 shader-立方体纹理,折射
参考《shader入门精要》// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Custom/Refract" { Properties { _Color("Color", Color) = (1,1,1,1)
2020-09-10 15:22:00 164
原创 shader高级纹理
天空盒子原理:使用立方体纹理视线,立方体纹理需要使用到六张纹理,前后左右上面。然后进行以立方体中心为出发点,进行采样。与纹理相交时的交点,即使采样点。
2020-09-09 16:19:06 138
原创 光照衰减
光照衰减意义原理意义如下图所示, 参数都相同的两个点光源, 因距离被照射物的远近不同,表现出的光照强度不同,即使光照的衰减。原理使用一张纹理作为查找表来在片元着色器中计算逐像素光照的衰减。...
2020-09-09 14:51:22 1503
原创 透明度混合的双面渲染
透明度混合的双面渲染效果思路实现效果思路渲染两次,第一个pass渲染背面, 第二个pass再渲染正面实现Shader "Custom/AlphaBlendBothSides" { Properties{ _Color("MainTint",Color) = (1,1,1,1) _MainTex("MainTex", 2D) = "white" {} _AlphaScale("AlphaScale", Range(0,1)) = 1
2020-09-07 20:21:58 285
原创 shader-透明度混合, 深度写入处理
透明度混合, 深度写入处理思路实现缺陷思路由于做透明度混合时,关闭了深度写入。关闭原因如下:导致无法对模型进行像素级别的排序,即排序错误,使得半透明效果异常。所以,可以使用两个pass, 第一个pass专门用来做深度写入,不处理其他,第二个pass块再处理颜色。这样可以使得排序正常,透明效果也正常。实现Shader "Custom/AlphaBlendZWrite" { Properties{ _Color("MainTint",Color) = (1,1,
2020-09-07 17:52:25 451
原创 shader-透明度混合
透明度混合思路实现思路关闭深度写入,使用纹理本身的a值,乘以自定义材质属性scale,得到最后的a值,并返回主要代码:return fixed4(ambient + diffuse,texColor.a * _AlphaScale);实现Shader "Custom/AlphaBlend" { Properties{ _Color("MainTint",Color) = (1,1,1,1) _MainTex("MainTex", 2D) = "
2020-09-07 15:44:03 228
原创 shader-透明度测试
透明度测试思路实现思路提前定义好剔除的边界值和透明通道图,使用clip函数,进行筛选。小于0的片元剔除,大于0的显示。实现Shader "Custom/AlphaTest" { Properties{ _Color("MainTint", Color) = (1,1,1,1) _MainTex("MainTex", 2D) = "white" {} _Cutoff("Alpha Cutoff", Range(0,1)) =
2020-09-07 14:21:55 199
原创 shader-遮罩纹理
遮罩纹理用途思路实现用途在原有基础上,强化或者弱化某方面的显示思路使用一张类似明暗的灰图,原有uv颜色的基础上, 乘以这个比例,达到针对性改变亮度变化的效果。fixed3 specularMask = tex2D( _MaskTex, f.uv ).r * _MaskScale;fixed3 specular = _LightColor0.rgb * _Specular * pow(saturate( dot( halfDir,tangentNormal )), _Gloss ) * spec
2020-09-07 10:50:00 230
原创 shader-渐变纹理
渐变纹理效果思路实现效果思路在漫反射计算时,对渐变纹理进行针对性取样。在模型背光面的顶点颜色,取样渐变纹理uv上,较暗的即可。比如在背光面时,法线方向与光源方向相反,进行点乘后结果为负数,再进行半兰伯特计算,得到的最终结果会是接近0的正数,对应渐变纹理上就是左边偏暗的地方。核心算法如下:fixed halfLambert = 0.5 * dot ( worldNormal, worldLightDir ) + 0.5;//这里使用半兰伯特计算后的结果,去取样渐变图uv颜色fixed3
2020-09-04 19:29:13 645
原创 shader-凹凸纹理
凹凸纹理效果过程代码效果过程使法线纹理上存储的信息,将相关变量转到切线空间进行统一计算。漫反射由法线方向和光源方向求得,高光由半方向和法线方向求得,半方向由光源方向和法线求得,环境光可以由系统内置变量拿到,代码Shader "Custom/NorMalTangentSpaceMat" { //9 Properties{ //定义变量 _Color ( "Color", Color) = (1,1,1,1)//总颜色参数 _Mai
2020-09-03 11:32:23 346
原创 shader-单张纹理+光照
单张纹理+光照效果代码原理:效果代码Shader "Custom/t1" { //9 //单张纹理+光照 Properties{ //属性 _Color ("Color", Color) = (1,1,1,1) //贴图整体颜色 _Specular ("_Specular", Color) = (1,1,1,1)//高光颜色 _Gloss("Gloss", Range(2,200)) = 20//高光范围 _MainT
2020-09-02 11:31:41 118
原创 模型资源打包与加载
前言模型的打包与加载,比普通类型的资源要复杂一些,涉及到模型身上引用到的图片、材质球、fbx文件的处理。而材质球的打包也不是打包的本体,而是先将材质球转成json的形式进行打包,之后加载时,再解析json中的数据重新生成材质球。这样做的目的,一来可能是为了减小包体大小,或者便于处理依赖,也可以使材质球信息更方便查看和管理。打包初始资源初始资源有四个,分别是materials, prefab,texture,fbx解析Material成json打开debug模式,查看材质球,可以看到有三个属性。
2020-08-14 14:53:47 448
原创 图集资源打包与加载
图集的打包与加载图集此举动机生成图集解析图集打包图集加载图集此举动机1.减少draw call: 多张图片需要多次draw call,合成了一张大图则只需要一次draw call。2.减少内存占用:OpenGL ES中每张贴图都需要设置成2的n次方才能使用。比如你有一张宽高为100x100和一张宽高为10x10的图片,如果不合成大贴图,那么需要使用128x128和16x16的两张图片(分别是2的7次方和2的4次方),但如果使用一张大图的话,可以把100x100和10x10的图片放到128x128的大
2020-08-11 10:16:54 869
原创 unity普通资源打包
这里写自如何定义目录标题欢迎使用Markdown编辑器22新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器22你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如
2020-08-04 14:50:14 746
原创 学习-代码简洁之道笔记
取名:名副其实, 起名字不要模糊,要见名知义, 比如 int d 可写成 int day避免误导, 比如使用xxlist去定义一个非list对象的名字,做有意义的区分, 不要使用 int xxlist1, int xxlist2, 或者叫infoDate,这种意思相近的名字变量,则对阅读者来说会造成困扰使用读得出来的名字, 不要用随机的字母去拼合, 比如 getcur...
2020-04-05 16:43:32 168
原创 C#中的EXCEL操作
//使用数据库方式建立连接 string fileName = "装备信息.xls"; string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=...
2019-02-27 17:33:27 160
原创 安卓环境配置
安卓环境配置1:所需软件的途径在Unity内部下载安卓包(BuildSetting),jdk与jre不要安装到同一个目录就行下载javaSE (jdk ), jdk环境变量配置{java 配置环境变量 JAVA_HOME变量 jdk目录path变量加入 javaHomeCLASSPATH变量配置}下载安卓Studio (https://developer.andr...
2018-10-22 10:32:31 144
原创 Unity3d安卓配置
安卓环境配置1:所需软件的途径在Unity内部下载安卓包(BuildSetting),jdk与jre不要安装到同一个目录就行下载javaSE (jdk ), jdk环境变量配置{java 配置环境变量 JAVA_HOME变量 jdk目录path变量加入 javaHomeCLASSPATH变量配置}下载安卓Studio (https://developer.andr...
2018-10-21 09:03:14 288
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人