[技美]反编竞品shader过程_unity shader反编译-程序员宅基地

技术标签: Unity Shader  unity  Unity3D  技美  游戏引擎  贴图  

Renderdoc下载地址:RenderDoc

Renderdoc截帧教程:GPU分析工具RenderDoc使用 - 知乎

GPA下载地址:Intel Graphics Performance Analyzers

GPA截帧教程:使用Intel GPA在PC上分析Android游戏的渲染流程 - 知乎

竞品游戏模型破解流程:[技美]renderdoc扒模型教程_danee的博客-程序员宅基地_renderdoc导出模型

HLSL语言入门:DirectX11--HLSL语法入门 - X_Jun - 博客园


目录

前言

使用GPA抓取对应帧数渲染信息

使用Renderdoc获取其余信息

使用Unity获取编译代码参考



前言

本次教程抓取的竞品游戏为闪耀暖暖,使用的抓帧工具为GPA和renderdoc(GPA用于获取代码和传入参数,renderdoc用于查看shader命名和传入贴图以及模型破解),本次教程主要描述shader反编的过程,模型破解的教程可以看我另外一篇文章(上面有链接)。

使用GPA抓取对应帧数渲染信息

可以通过点击对应模型查看渲染过程,如下我想查看上层羽毛的渲染

点击SH可以查看当前渲染代码,GPA可以下载最新版,最新版本已经可以直接查看HLSL编译结果,更加便于阅读,分析的shader代码为HLSL格式(可以先过一下HLSL入门)

顶点着色器代码对应的是Vertex一行,Pixel对应的是片元着色器,需要分开进行反编,可以拷贝保存到本地

点击Show All Resources可以查看当前参与渲染的模型资源和shader脚本以及传入的参数,传入参数可以导出CSV格式到本地,方便查看

使用Renderdoc获取其余信息

使用renderdoc可以让我们方便地获取贴图的输入(省得我们去猜贴图的步骤),右键对应的贴图可以进行导出

我们还可以在pipline state窗口看到对应的shader命名,同样可以查看对应的shader代码,代码格式基本和GPA一致

使用Unity获取编译代码参考

通过上面的操作,我们已经拥有了模型和对应的shader脚本,当然shader反编回来这个过程才是最占用时间的,如果不清楚有些代码在unity如何调用的,我们可以写一个测试脚本,然后点击编译去查看,这样就可以对照去理解代码

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42198546/article/details/114015341

智能推荐

tsne python_sklearn中tsne可视化-程序员宅基地

文章浏览阅读2.1k次。声明:manifold:可以称之为流形数据。像绳结一样的数据,虽然在高维空间中可分,但是在人眼所看到的低维空间中,绳结中的绳子是互相重叠的不可分的。对数据降维比较熟悉的朋友可以看这篇博客t-SNE实践——sklearn教程数据降维与可视化——t-SNEt-SNE是目前来说效果最好的数据降维与可视化方法,但是它的缺点也很明显,比如:占内存大,运行时间长。但是,当我们想要对高维数据进行分类,又不清楚这..._python sklearn t-sne visualizations

第109章 SQL函数 POSITION_sql position-程序员宅基地

文章浏览阅读3.4k次,点赞4次,收藏15次。文章目录第109章 SQL函数 POSITION大纲参数描述POSITION, INSTR, CHARINDEX和$FIND示例第109章 SQL函数 POSITION返回子字符串在字符串中的位置的字符串函数。大纲POSITION(substring IN string)参数substring - 要搜索的子字符串。它可以是列的名称、字符串字面值或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(如CHAR或VARCHAR2)。IN string - 要在其中搜索子字符串的字_sql position

【ArcGIS平台系列】ArcGIS平台,打造可落地的新一代Web GIS_针对浏览器端的webapp开发,arcgis提供了-程序员宅基地

文章浏览阅读3.1k次。新一代Web GIS的内涵 "新一代Web GIS",是Esri在新的GIS技术和时代背景下,所提出的一种以Web为中心的、全新的GIS应用模式,在这种模式中,资源和功能都进一步整合,GIS服务的提供者以Web的方式提供资源和功能,而用户则采用多种终端随时随地访问这些资源和功能。在这种模式下,GIS平台变得更加简单易用、开放和整合,使得GIS为组织机构所有人使用成为现实,为"Web_针对浏览器端的webapp开发,arcgis提供了

嵌入式经典面试题之选择题_如果boot loader、内核、启动参数以及其他的系统映像四部分在固态存储设备上分别-程序员宅基地

文章浏览阅读6.3k次,点赞2次,收藏32次。一、单项选择题1、如下哪一个命令可以帮助你知道shell命令的用法( A )A. man B.pwd C. help D. more2、Linux分区类型默认的是:( B )A. vfat B. ext2/ext3 C. swap D. dos3、在大多数_如果boot loader、内核、启动参数以及其他的系统映像四部分在固态存储设备上分别

python2 安装faiss-gpu 报错 faiss/faiss/python/swigfaiss.i:241: Error: Unable to find ‘faiss/impl/platfo_warning: generating metadata for package faiss-gpu-程序员宅基地

文章浏览阅读1.7k次。1. 安装报错$ sudo pip install faiss-gpu --default-timeout=1000 -i https://pypi.douban.com/simpleDEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop su_warning: generating metadata for package faiss-gpu produced metadata for pro

【yolov8系列】将yolov8-seg 模型部署到瑞芯微RK3566上_yolov8 rknn-程序员宅基地

文章浏览阅读3.7k次,点赞7次,收藏43次。前言之前记录过,整体比较流畅,记录了onnx转rknn的相关环境配置,使用的rk版本为rknn-toolkit2-v1.4.0。当前库已经更新为1.5,这里还是沿用1.4的版本进行记录。本篇博客是在上篇博客(yolov5的rk3566的部署)的基础上,记录下yolov8n-seg的模型在3566上的部署过程。若精度异常可查看官方提供文档,写的比较详细。这里说明下自己遇到的问题:yolov8模型模型进行全量化结果异常yolov8模型在PC端模拟器的运行结果时,板端运行结果异常。_yolov8 rknn

随便推点

1077: 三位数求解_oj1077三位数求解-程序员宅基地

文章浏览阅读403次。时间限制: 1 Sec内存限制: 128 MB题目描述已知xyz+yzz=n,其中n是一个正整数,x、y、z都是数字(0-9),编写一个程序求出x、y、z分别代表什么数字。如果无解,则输出“No Answer”注意:xyz和yzz表示一个三位数,而不是表示x*y*z和y*z*z。输入输入一个正整数n。输出输出一行,包含x、y、z的值,每个数值占4列。样例输入 Copy532样例输出 Copy 3 2 1提示注意一个三位数的百位数字不..._oj1077三位数求解

React antd表单控件+栅格系统控制label长度_react 表单 fields 长度-程序员宅基地

文章浏览阅读2.4k次。import React from 'react'import moment from 'moment';//cnpm i moment --saveimport { Card, Form, Input, Button, Checkbox, Radio, Select, Switch, DatePicker, TimePicker, Upload, Icon, message, InputNumber } from 'antd'const { Option } = Select;const { T._react 表单 fields 长度

elementUI分页中改变current-page绑定的值无效问题的解决_分页组件js直接修改页码绑定值不触发事件-程序员宅基地

文章浏览阅读8.3k次,点赞5次,收藏16次。问题今天在使用elementUI分页组件el-pagination时,在方法中修改current-page绑定的值,正常来说页面上显示的当前所在的页码会随着改变,但是并没有。分页代码:<!-- 分页 --><el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-_分页组件js直接修改页码绑定值不触发事件

在 KVM 虚拟机中运行 macOS 系统_-device isa-applesmc,osk=-程序员宅基地

文章浏览阅读1.5w次,点赞2次,收藏8次。之前介绍过如何在 Ubuntu 系统和 KVM 中安装 Windows 系统,当时就说了,希望有机会能把 macOS 也给虚拟化了,这样就完美了。今天这篇文章就是解决这个问题的。准备工作开始之前,你需要做好以下的准备工作:一台可以正常工作的 Mac 电脑 一台装好了 KVM 的 Linux 主机 下载好了的 macOS 安装包 一颗不怕折腾的心首先参考 Dhiru Khol..._-device isa-applesmc,osk=

【普中开发板】基于51单片机的简易密码锁设计( proteus仿真+程序+设计报告+讲解视频)_单片机密码锁程序讲解-程序员宅基地

文章浏览阅读1.4k次,点赞19次,收藏17次。【普中】基于51单片机的简易密码锁设计( proteus仿真+程序+设计报告+讲解视频)仿真图proteus8.16(有低版本)程序编译器:keil 4/keil 5编程语言:C语言设计编号:P10。_单片机密码锁程序讲解

C语言复习-程序员宅基地

文章浏览阅读172次。宏定义就是给表达式起一个别名,以后想使用这个表达式的时候,使用别名即可,当表达式需要改变的时候,只需要修改定义处即可,就无须修改整个代码了。格式:#define 宏名 宏值注意:宏定义的名字是一个标识符,要符合标识符命名规范,且一般情况下,宏名都大写。注意事项:1.宏定义是在预处理阶段完成替换的;2.宏定义只是一个简单的替换,无脑替换;存储类型 数据类型 变量名;

推荐文章

热门文章

相关标签