unity shader -凯发k8官网下载客户端

文章目录 问题初步判断凯发k8官网下载客户端的解决方案解决工具project 问题

在之前的一篇文章中:unity shader – 圣斗士星矢 人物 shader 还原 – gpa 抓帧提取资源、shader,root权限、救砖、ro.debuggable=1(最终还是renderdoc无法抓帧)

我尝试了抓帧分析,并还原 圣斗士渲染效果

但是发现在以下部分平台的显示是不正常的:

模拟器上 – 不正常unity editor – 正常pc – 正常mobile – 正常

就唯独:模拟器上不正常

经过经 shader lab 中的逐行排查(废了半天时间)

发现 shader lab 中的 uniform 变量名中

一旦有 “__” 双下划线开头的,都会导致这个问题

比如:

// jave.lin : 示例代码shader "thisisshadername"{hlslinclude...__maintex;// 比如,这个 scale offset 的内置变量,发布 apk 之后// 放在模拟器上都会导致 渲染 显示异常// 需要将 __maintex, __maintex_st 修改位:_maintex, _maintex_st// 然后重新发布,再到模拟器下,才能正常__maintex_st;...endhlsl}

做个记录,便于排坑,也便于后人搜索到类似问题,快速解决

初步判断

这个 bug,发生在多个不同的模拟器:mumu,夜神,等(我上面测试的就是夜神模拟器)

初步判断:既然多个模拟器都出现了相同的问题 应该是这些模拟器都有使用到一些通用的代码(相同的内核)

并且这部分的代码应该是和 shader 代码的生成 有关系的,可能 “__” 双下滑线是刚刚好一的一些内置关键逻辑有特殊的处理,才导致这个问题

我在 unity 官方文档上并没有查找到对应的资料: 比如:https://docs.unity3d.com/manual/30_search.html?q=underscore

又如:i have a few shaderlab questions

又或者是:google 搜索:unity shader lab variables specifications 或是 unity shader lab undersocres

都没有相关的 more underscores 的特殊介绍

凯发k8官网下载客户端的解决方案 __maintex -> 修改为 : _maintex__maintex_st -> 修改为 : _maintex_st 解决工具

如果 shader 少,应用到的材质也少,那么可以使用下面的正则表达式放在:sublime 中逐个文件内容的手动替换替换

find: ((__)([^_]))(w ) replace : _$3$4

如果 shader 多,或是应用到有问题 shader 的材质过多,我们可以脚本化,写一些工具,批量文件的执行正则来替换其内容

project

(不公开,备份用) test_sdx_role_shader_in_simulator_compatible_u3d2018.2.11f1

本文来自网络,不代表乐文库立场,如若转载,请注明出处:https://www.lewenku.com/?p=458315

网站地图