Unity记录一些glsl和hlsl的着色器Shader逆向代码

这篇具有很好参考价值的文章主要介绍了Unity记录一些glsl和hlsl的着色器Shader逆向代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以下内容一般基于 GLSL 300 之后

以下某些代码行,是“伪代码“,绝大部分是renderDoc 逆向产生标准代码

本人OpenlGL零基础,也不打算重头学

目录

Clip() 剔除函数 discard;

FS最终颜色输出 out 和最终颜色相加方程


Clip() 剔除函数 discard;

    _21 = texture(_7, _14);
    //.................
    _26 = _21.w + (-_33._m4);
    _29 = _21.xyz * _33._m3.xyz;
    _24 = _26 < 0.0;
    if (_24)
    {
        discard;
    }

从 discard; 命令可得知,一般通过透明度剔除, _26 == color.a

_21.w 刚好对应color.a

显而易见:_21 == _color;  就是v2f 的颜色

再往上推,得知,_14 == uv

FS模块颜色输出 out 和最终颜色相加方程

#if FS
layout(location = 0) out vec4 _17;
//因为 —17为最终输出,所以通过逆向如下
//关键在于下面的方程式 _125 = XXXXXX + _XX;
main(){
    vec3 _125 = (_29 * vec3(_26)) + _28;
    _17 = vec4(_125.x, _125.y, _125.z, _17.w);
    _17.w = 1.0;//这行代码,不重要
}

对于,这个方程式(求——_125颜色)

vec3 _125 = (_29 * vec3(_26)) + _28;

我们假设是漫反射(diffuse)+环境光(ambient)

所以,_28 可能是 diffuse 或者 ambient

因为方程式的前半部分,有乘以一个点积(dot方向),所以前半部分很可能是漫反射

所以,_28推断为环境光(ambient),因为环境光是不需要

_26 = dot(_27, _19);
_28 = _29 * _33._m1.xyz;// _33.m1 是很奇怪的传入(binding==1)
_29 *= _33._m2.xyz;//虽然_33.m2也很奇怪

参考资料-额外:

Layout Qualifier (GLSL) - OpenGL Wiki (khronos.org)

opengl - GLSL Uniform layout binding and textures - Stack Overflow

高级GLSL - LearnOpenGL-CN

以上链接分别有wiki,技术论坛讨论,中文论坛等等资料,都是不可多得的一手资料(其实也挺烂大街的,网上一搜索,多如牛毛) 文章来源地址https://www.toymoban.com/news/detail-726655.html

到了这里,关于Unity记录一些glsl和hlsl的着色器Shader逆向代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity里面CG和HLSL在写法上的一些区别

    回到目录 大家好,我是阿赵。这里继续讲URP相关的内容。 这次想讲的是CG和HLSL在写法上的一些区别。 首先,基本上大家都知道的事情再说一遍。 三种Shader编程语言: 1、基于OpenGL的 OpenGL Shading Language ,缩写 GLSL 2、基于DirectX的 High Level Shading Language ,缩写 HLSL 3、基于NVIDIA的

    2024年02月15日
    浏览(33)
  • Unity | Shader(着色器)和material(材质)的关系

    一、前言 在上一篇文章中 【精选】Unity | Shader基础知识(什么是shader)_unity shader_菌菌巧乐兹的博客-CSDN博客 我们讲了什么是shader,今天我们讲一下shder和material的关系 二、在unity中shader的本质 unity中,shader就是一串代码,如下图shader(就是一个平平无奇的shader) 但是,这个sh

    2024年02月02日
    浏览(56)
  • 着色器语言GLSL学习

    注意:位置坐标大小可能大于1,小于0,因此要将其转化为0-1之间 clamp(num, min, max):将num值约束在(min, max)之间,小于min,值为min,大于max,值为max,在min-max之间,值为num step(n, x):当xn, 返回0;否则返回1 设长度为r,则可列出如下公式 由于光照的运算需要放在视图空间下,所

    2024年01月21日
    浏览(36)
  • 着色器GLSL ES语言10分钟了解

    参考资料:threejs中文网 threejs qq交流群:814702116 学习原生WebGL,除了前面说的JavaScript语言之外,你还需要学习一门新的语言就是着色器语言GLSL ES。 平时你接触的JavaScript、C、java等语言是在CPU上执行,对于着色器语言GLSL ES是在显卡GPU上执行。 如何学习 着色器语言GLSL ES语法虽

    2024年02月03日
    浏览(45)
  • vscode shadertoy插件,非常方便的glsl着色器编写工具

    很著名的shadertoy网站,集合了非常多大神利用数学写出美妙的shader效果。像shadertoy创始人之一的IQ大神它在这方面有很多的建树。他的利用光线步进和躁声可以创建很多不可思议的3D场景。  vscode有一件shadertoy的插件,安装后可以新建一个*.glsl文件,写好代码就可以直接运行看

    2024年04月09日
    浏览(35)
  • 让AI臣服,而不是被它替代!让ChatGPT为我们编写Unity3d Shaderlab的着色器(shader)

    ChatGPT的火热大家应该都有目共睹,文案工作者、翻译工作者和画师等各种行业都在被嘲即将失业。不光是这些岗位的员工,作为资深社畜程序猿也能感受到会受到冲击。网上很多人都在发ChatGPT写的代码,并开始大肆宣扬AI要取代程序员了,今天测一测使用ChatGPT来生成一些代码,

    2023年04月23日
    浏览(45)
  • 【Webgl_glsl&Threejs】搬运分享shader_飘落心形

    将shadertory上的代码转成了threejs可以直接用的代码,引入文件的material,并在创建mesh或已有物体上使用material即可,使用时请注意uv对齐。 flowHeart

    2024年04月27日
    浏览(33)
  • shader学习(二)顶点着色器

    1、C#脚本设置shader参数 2、在shader里做变换和颜色显示 3、改变顶点的位置信息 4.顶点扭曲(做周期旋转) 5、实现波浪效果 6、实现漫反射和点光源照射 效果图: 7、实现镜面反射

    2024年02月13日
    浏览(44)
  • 【图像增强——7种锐化方法原理与实现(C++、Python、shader GLSL)】

    Image sharpening algorithms are a technique used to enhance details and edges in images. These methods can all be used for image sharpening. In short, sharpening is about enhancing the difference on edges (what is an edge, see image edge detection, etc.) to highlight the color brightness value between pixels around the edge. Edge detection is to find the edg

    2024年02月07日
    浏览(52)
  • Shader学习(三)(片元着色器)

    1、在片元着色器处理漫反射 在片元处理的漫反射相较于顶点中处理的漫反射在明暗交接处更加清晰

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包