首页 > 其他分享 >Unity踩坑记录(持续更新)

Unity踩坑记录(持续更新)

时间:2022-08-31 22:14:47浏览次数:131  
标签:cbuffer 记录 Windows 安卓 Unity 更新 shader 编辑器 pass

1. 利用UsePass可以帮助投影pass合批。相同网格、不同材质、不同shader,只要这些shader使用UsePass引用了同一个pass,并且材质的属性和宏都一样,那么这些物体的投影pass就可以合批(包括GPU Instancing和SRP Batcher)。注:这个投影pass的特殊处理可能是context.DrawShadows带来的,其他的pass享受不到这个好处。

2. 想要shader兼容SRP Batcher,就需要该shader的所有pass的UnityPerMaterial cbuffer的layout(排列和大小)都一样。注1:实际上unity会对齐cbuffer的大小,也就是说一个pass有1个half,另一个pass有4个half,那这个shader还是兼容SRP Batcher的;注2:还不确定排列顺序影不影响,待测试。

3.想要同时实现1和2,就需要所有想利用UsePass的shader的所有pass的UnityPerMaterial cbuffer的排列大小都一样,并且UnityPerMaterial cbuffer里的所有变量都要在所有shader的属性表里声明。

4.SHADER_API_MOBILE这个shader宏在编辑器下不同版本表现不一致。目前可以确定的是Windows编辑器安卓平台2020.3.17及之前都是关闭的。在3.17到3.22之间的某个版本发生了改变,Windows编辑器安卓平台DX11下是关闭的,Vulkan和OpenGLES3是开启的。而Application.IsMobilePlatform这个接口在编辑器安卓平台下一直是false。这就导致Windows编辑器安卓平台下的显示效果会有问题,比如URP的多光源渲染就与这个问题有关。从2020.3.17之后的某个版本开始,Windows编辑器安卓平台Vulkan或OpenGLES3下,URP的多光源一直是坏的。

5.2021为了解决4这个问题,脚本中改用接口GraphicsSettings.HasShaderDefine(BuiltinShaderDefine.SHADER_API_MOBILE)来判断是否是移动平台。但是2020在这里又出毛病了,还是3.17到3.22之间的某个版本开始,这个接口在DX11下也返回true!

标签:cbuffer,记录,Windows,安卓,Unity,更新,shader,编辑器,pass
From: https://www.cnblogs.com/vkensou/p/16644680.html

相关文章

  • Ubuntu 16.04 LTS内核更新!
    Canonical发布了2016年4月21日Ubuntu16.04LTS公布以来的首次内核更新,此次更新修补了由不同开发人员、Linux 黑客和安全研究人员发现的共15个安全漏洞。在此我......
  • 【随手记录】docker load报错: invalid diffID for layer
    最近在给项目上的服务器导入镜像时候报错invaliddiffIDforlayer7:expected"sha256:5a0729f86ba",got"sha256:85f22dd9"原因是因为一些外在原因改变了镜像的......
  • andv table row-selection的bug记录
    antdv版本:^3.2.9下面全部代码<template><div><divstyle="margin-bottom:16px"><a-buttontype="primary":disabled="!hasSelected":loading="loadin......
  • vue直接赋值后数据不更新
    在写vue的时候,存在某些情况,明明赋值给model了,页面数据不变化。原因我就不仔细分析了,下面直接上解决办法:1.1、Vue不能检测以下变动的数组当你利用索引直接设置一个项时,......
  • 如何精简Unity中使用的字体文件
    http://t.zoukankan.com/lancidie-p-6285569.html ◆◆◆问题描述我们《极无双》项目中使用了两套字库。黑体字体来显示大部分既定文本、玩家昵称、对话等。隶书字体来......
  • 将日志按小时分割文件记录
    如果存在多个%d,则需要在不是作为分割时间的里面加上aux<springPropertyscope="context"name="appLogPath"source="appLogPath"defaultValue="/data/backup"/>......
  • 序列化器:反序列换-添加和更新数据操作
    前端传到后端需要反序列化,后端传到前端需要序列化正常需要serializer两次:fromdjango.viewsimportViewfrom.modelsimportStudentfrom.serializersimportStude......
  • Qualcmm的内存泄露调试记录
    dump产生指令:adbrootadbshellsetenforce0adbshell"chmod0777/data/local/tmp"adbshellsetproplibc.debug.malloc.programapp_processadbshellsetpropl......
  • mac ios xcode profile过期遇到的问题记录 No signing certificate iOS Development f
    profile过期了,重新生成并下载证书,仍然提示错误:Nosigningcertificate"iOSDevelopment"found然后在下面的ManageCertificate点开后,发现有警告:Theoperationcouldn’t......
  • 工作笔记之Android记录
    工作笔记工作笔记用于记录Android开发过程中遇到的疑难点和难以解决的点,特此记录。Kotlin的版本关系kotlin和room的使用需要进行调整,如kotlin1.7.10room2.5.0和kotli......