
unity
文章平均质量分 67
MyIsJake
这个作者很懒,什么都没留下…
展开
-
Unity shader 学习记录(复杂光照2-光照衰减与阴影 )
unity支持四种光源类型:平行光、点光源、聚光灯和面光源。光源最常用得属性有:位置、方向、颜色、强度遗迹衰减。1、光照衰减:在前向渲染中添加光照衰减:Shader "Unity Shaders Book/Chapter 9/Forward Rendering" { Properties { _Diffuse ("Diffuse", Color) = (1, 1, 1, 1) _Specular ("Specular", Color) = (1, 1, 1, 1) _Gloss原创 2021-12-31 00:52:04 · 2059 阅读 · 0 评论 -
Unity shader 学习记录(复杂光照1-渲染路径 )
本章是对前置章节的进一步补充,主要是针对多光源的解析,分为以下几个方面:(1)、渲染路径 (2)、光照衰减 (3)、阴影 (4)、标准实现的unity shader1、渲染路径:主要分为前向渲染、延迟渲染和顶点照明渲染(已经被抛弃)。我们可以在Player->Graphics->Rendering path来选择项目所需的渲染路径。也可以在camera中选择是用setting做的设置或是选择别的渲染路径。做完选择后,unity会自动查找shader中tags lightmod原创 2021-12-30 21:00:29 · 1966 阅读 · 0 评论 -
Unity shader 学习记录(透明效果2)
前篇介绍了透明度测试和透明度混合的鸡腿实现,下面从几个功能点深入解析:1、渲染顺序Unity提供了渲染队列来解决渲染顺序。可以使用SubShader的Queue标签来决定模型归于哪一个渲染队列。 Unity内部使用一些整数索引来表示每个渲染队列,索引号越小越早被渲染。下面是定义的五个渲染队列:用法是在subshader中加入Tag{"Queue"="AlphaTest"}或{"Queue"="Transparent"}Zwrite Off用于关闭深入写入,一般写在pass中,表示该.原创 2021-12-22 17:06:33 · 1326 阅读 · 0 评论 -
Unity shader 学习记录(透明效果1)
1、首先进行深度测试(是否开启)和深度检验,然后写入颜色缓冲,深度缓冲(深度缓冲要看是否开启深度写入)2、颜色缓冲和深度写入是两个不同的东西,每次得到结果会写入颜色缓冲中3、透明物体进行排序时,都考虑到有些情况会有循环覆盖个物体遮挡的问题,但是还是没什么比较通用的解决方法,所以这就是渲染透明物体大家都谨慎的原因吧。(就像明知道有个渣男,却说忍忍吧的感觉)...原创 2021-12-22 16:20:38 · 1111 阅读 · 0 评论 -
Unity shader 学习记录(基础纹理篇4遮罩纹理)
遮罩纹理我理解就是在原有的效果上面添加一层蒙板,这个蒙板可以根据不同区域设置不同的深度,最后出来的效果就是不同色块蒙了不同颜色的遮罩。实现也很简单,就是在计算高光反射的最后,乘这个遮罩纹理和程度。代码实现如下:Shader"UnityShadersBook/Chapter7/MaskTexture"{Properties{_Color("ColorTint",Color)=(1,1,1,1)_MainTex("MainTex...原创 2021-12-15 09:46:43 · 270 阅读 · 0 评论 -
Unity shader 学习记录(基础纹理篇3渐变纹理)
渐变纹理可以控制模型的漫反射,从而使模型变成卡通风格或者写实风格等。原来计算漫反射的时候,我们都是使用表面法线和光照方向的点积结果于材质的反射率相乘来得到表面的漫反射光照,现在可以用渐变纹理来进行控制。代码如下:Shader"UnityShadersBook/Chapter7/RampTexture"{Properties{_Color("ColorTint",Color)=(1,1,1,1)_RampTex("RampTe...原创 2021-12-15 09:46:36 · 220 阅读 · 0 评论 -
Unity shader 学习记录(基础纹理篇2法线纹理)
2、凹凸映射。凹凸映射分为高度纹理和法线纹理,因为高度映射在实时计算不能直接得到表面法线,而是需要由像素的灰度值计算,需要消耗更多的性能,所以一般游戏中用的是法线纹理。 法线纹理按照我的理解是通过一个纹理存储模型的法线信息,因此我们写shader的时候思路就是提取该纹理的信息,得到法线,然后还是按照上面的主纹理计算方式来进行计算。法线计算又分为两种:切线空间下的计算、世界空间下的计算。而切线空间下的计算更节省性能,适用于非cube2D格式下的所有,所以下面重点说切线空间下的计算。切线空间下的:.原创 2021-12-15 09:46:20 · 490 阅读 · 0 评论 -
unity导表excel->lua优化
转自zblade - 博客园发现一位大佬的基地,特此转载一篇做个标记,以防以后找不到了。这是我最早而且持续时间最长的一个优化工作。在我们的游戏中,策划会有大量的配置表,全都配置在excel表中,通过编写导表工具,可以将excel表导出为对应的lua表,用于在游戏中进行lua表的加载和查找。我总结一下优化的几个节点: 1、最初版本的导表 最初版本的lua导表,是将excel中对应的key-value值逐一导出,其基本的格式可以表示为:local skill =...转载 2021-12-14 15:28:44 · 837 阅读 · 0 评论 -
针对移动端TBDR架构GPU特性的渲染优化
本文转自针对移动端TBDR架构GPU特性的渲染优化-腾讯游戏学堂真是篇好文章,解释了我一直以来的好多疑惑!TBDR(Tile-Base-Deffered-Rendering)是现代移动端gpu的设计架构,它同传统pc上IR(Immediate-Rendering)架构的gpu在硬件设计上是差别很大的。手游正是运行在这些移动端的TBDR架构上,所以手游的渲染优化在硬件的角度上讲有其独特之处,甚至一些特点和优化点与PC是大相径庭的,基于硬件的优化是应用程序优化很重要的一部分,最近阅读了一些tbdr的硬件转载 2021-12-14 15:23:05 · 507 阅读 · 0 评论 -
Unity5 如何做资源管理和增量更新
原文地址:http://blog.youkuaiyun.com/ring0hx/article/details/46376709工具Unity 中的资源来源有三个途径:一个是Unity自动打包资源,一个是Resources,一个是AssetBundle。Unity自动打包资源是指在Unity场景中直接使用到的资源会随着场景被自动打包到游戏中,这些资源会在场景加载的时候由unity自动加载。这些资源只要放置在Unity工程目录的Assets文件夹下即可,程序不需要关心他们的打包和加载,这也意味着这些资源都是静态转载 2021-12-14 15:22:04 · 602 阅读 · 0 评论 -
unity的gpu instancing技术
原文地址:http://gad.qq.com/program/translateview/7213959成千上万的球体,用几十个渲染批次绘制完成。对实例合并批次指示图形处理器进行绘制某些东西需要时间。要给图形处理器提供数据,包括网格和材质属性也需要时间。我们已经知道有两种方法可以减少绘制调用的数量,也就是静态批次合并和动态批次合并。Unity可以将静态对象的网格合并成一个较大的静态网格,这能够减少绘制调用。只有使用相同材质的物体才能以这种方式组合起来。而需要付出的代价是存储更多的网格数据。启转载 2021-12-14 15:18:19 · 1812 阅读 · 0 评论 -
Unity优化之GC优化
转自zblade - 博客园介绍: 在游戏运行的时候,数据主要存储在内存中,当游戏的数据在不需要的时候,存储当前数据的内存就可以被回收以再次使用。内存垃圾是指当前废弃数据所占用的内存,垃圾回收(GC)是指将废弃的内存重新回收再次使用的过程。 Unity中将垃圾回收当作内存管理的一部分,如果游戏中废弃数据占用内存较大,则游戏的性能会受到极大影响,此时垃圾回收会成为游戏性能的一大障碍点。 本文我们主要学习垃圾回收的机制,垃圾回收如何被触发以及如何提GC收效率来提高游戏的性能。Uni转载 2021-12-14 15:13:31 · 329 阅读 · 0 评论 -
Unity移动端的性能优化
1.渲染利用reflect probe代替反射、折射,尽量不用RTT、GrabPass、RenderWithShader、CommandBuffer.Blit (BuiltinRenderTextureType.CurrentActive...) 建立统一后处理框架(bloom、hdr、DOF等)代替多后处理,可以共用模糊函数,减少多次blit;另外要注意RTT的尺寸。 空气折射、热浪扭曲等使用GrabPass不是所有硬件都支持,改为RTT或者后处理来优化。 建立统一shader材质代替单一sha转载 2021-12-14 14:58:31 · 1294 阅读 · 0 评论 -
unity优化建议
最简单的优化建议:1.PC平台的话保持场景中显示的顶点数少于200K~3M,移动设备的话少于10W,一切取决于你的目标GPU与CPU。2.如果你用U3D自带的SHADER,在表现不差的情况下选择Mobile或Unlit目录下的。它们更高效。3.尽可能共用材质。4.将不需要移动的物体设为Static,让引擎可以进行其批处理。5.尽可能不用灯光。6.动态灯光更加不要了。7.尝试用压缩贴图格式,或用16位代替32位。8.如果不需要别用雾效(fog)9.尝试用OcclusionCulling,在转载 2021-12-14 14:56:42 · 255 阅读 · 0 评论 -
unity text颜色渐变
下面的组件做一个记录,可以使ui自己设置单个文字上下颜色,最终效果为,仿照艺术字using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using UnityEngine.EventSystems;[AddComponentMenu("UI/Effect/UIColorGradient")]public class UIColorGradient : B原创 2021-12-14 14:43:33 · 2396 阅读 · 0 评论 -
Unity shader 学习记录(基础纹理篇1)
基础纹理总共分为四种(也可以说是三种,除了主纹理)。主纹理、凹凸映射(高度纹理和法线纹理)、渐变纹理、遮罩纹理。首先记录几点纹理注意事项:(1)顶点的uv坐标范围通常都被归一化到[0,1],但是纹理采样使用的不一定是在[0,1]范围内,纹理的平铺模式能决定超出范围如何进行采样。(2)OpenGL中纹理原点位于左下角,DirectX原点位于左上角,而unity采用了OpenGL用法,大情况它会帮我们在DirectX平台进行转换。主纹理代码:Shader"Unlit/SingleTe..原创 2021-12-14 18:02:22 · 160 阅读 · 0 评论 -
unity shader 学习记录(基础光照篇)
unity shader 学习记录(基础光照篇)原创 2021-12-02 19:40:22 · 410 阅读 · 0 评论 -
unity 图片改成astc 所有机型机型检测
unity中有一个bug,导入的图片莫名的边缘会有其他颜色出现,刚开始我们以为是压缩格式的问题,但是后来改成rgba32还是有问题,google搜了一下,说是把图片设置为astc格式会使该问题消失。所以就有了下面的机型适配。(当然,切九宫也可以使得问题解决,但是九宫是治标不治本)机型 该机型是否兼容astc格式 详细信息手机:phone5s ...原创 2019-12-19 19:35:42 · 1673 阅读 · 0 评论 -
unity上加载2D地图(1)
18年年初,跳到了现在的公司,在刚进来时,CTO跟我们讲了要做的游戏类型,2D地图,3D人物(虽然后来又变成3D场景),固定视角的摄像机,随后做地图这个活落到了我身上。过程怎么想的我忘了,过去的时间有点远,现在只是记录整理一下。因为我想BB的细一点,所以会分为几篇。先说一下我的思路,我是把世界坐标0,0放在左上角,然后通过循环加载贴图,当然,贴图的大小是固定的,1024*1024,然后把贴...原创 2018-11-21 21:18:21 · 4766 阅读 · 0 评论 -
unity中,C#封装人物移动(1)
通过改变 _path 的值,来带动循环的执行,在方法里面可以是人物前后左右上下进行移动,也可以接入A*插件protected void moveUpdate(float elapsedTime) { if (_path == null) { return; } ...原创 2018-11-21 21:22:27 · 1312 阅读 · 3 评论 -
lua 打印table
三个方法,每个方法都要ubutong的通,详情看代码---打印table---@param table table @列表---@param title string @标题function print_table(table, title)local text = ""if title ~= nil and title ~= "" thentext = text .....原创 2018-11-21 21:25:56 · 780 阅读 · 0 评论 -
lua判断两个数组是否相等
---判断两个table是否相等function table.equal(a, b)if #a ~= #b thenreturn falseendfor i = 1, #a doif a[i] ~= b[i] thenreturn falseendendreturn trueend原创 2018-11-21 21:27:11 · 3831 阅读 · 0 评论 -
lua分割字符串
---分割字符串(连续两个分隔符时,分割成"")function string.split_string(text, pattern)local t = {}local textlen = string.len(text)local nextindex = 1while nextindex <= textlen dolocal index = string.find(...原创 2018-11-21 21:28:19 · 1643 阅读 · 0 评论 -
lua实现定时器
先接入这个类中的循环,然后调用这个接口TimerCounter.CreateTimer(时间(按秒传入),function()end)module("TimerCounter", package.seeall ) local _timerDict = {} local quest_list = {} TimerData = {}function TimerData:...原创 2018-11-21 21:33:47 · 11235 阅读 · 0 评论 -
unity 中lua实现震屏
--[[ shake_power 震动强度 frequency 震动频率 shake_time 震动时间 start_shake_time 开始往前拉伸镜头时间 recovery_time 摄像机恢复时间 stretch_length 摄像机每次前后拉伸长度 shake_angle 震动角度]]function star...原创 2018-11-21 21:36:42 · 447 阅读 · 0 评论 -
unity根据摄像机适配easytouch
废话不多说,直接上代码传入easytouch的园丁偏移值,根据摄像机的旋转,输出变换后的x,yfunction fitRoleCamera(joyPositionX,joyPositionY) if CameraUtils.curCameraType == GameCameraType.Camera_3D then local camera = CameraUt...原创 2018-11-21 21:11:11 · 423 阅读 · 0 评论