Unity中Shader指令优化(编译后指令解析)

这篇具有很好参考价值的文章主要介绍了Unity中Shader指令优化(编译后指令解析)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

我们先读懂Shader编译后代码,才能对Shader进行合理的优化


一、我们先创建一个简单的Shader

Shader "MyShader/P2_3_6"
{
    Properties
    {
        
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };
            
            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                return fixed4(i.uv,1,1);
            }
            ENDCG
        }
    }
}



二、编译这个Shader,并且打开

unityshader 如何查看指令数,Unity,unity,游戏引擎

  • 我们目前先只编译到 D3D 平台

这是编译后的代码(我们来逐步分析):文章来源地址https://www.toymoban.com/news/detail-767531.html

// Compiled shader for custom platforms

//
// 
// NOTE: This is *not* a valid shader file, the contents are provided just
// for information and for debugging purposes only.
// 
//
// Skipping shader variants that woul

到了这里,关于Unity中Shader指令优化(编译后指令解析)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Unity 性能优化之Shader分析处理函数ShaderUtil.HasProceduralInstancing: 深入解析与实用案例

    点击封面跳转到Unity国际版下载页面 在Unity中,性能优化是游戏开发过程中非常重要的一环。其中,Shader的优化对于游戏的性能提升起着至关重要的作用。本文将深入解析Unity中的Shader处理函数 ShaderUtil.HasProceduralInstancing ,并提供一些实用案例来展示其用法。 ShaderUtil.HasProce

    2024年02月09日
    浏览(31)
  • Unity Shader - if 和 keyword 的指令比较

    Unity : 2020.3.37f1 Pipeline : BRP 下面是 shaderlab 和 arm mobile studio 中的 graphics analyzer 的 glsl 代码 VS FS 下面是 shaderlab 和 glsl VS: 和上面的一样,就不复制上来的 主要看 FS: if 是指令实打实存在的 kw 原理是 macro 的 define,是在预编辑级别的分支,因此指令少一些也很正常 if 的推荐使

    2024年02月15日
    浏览(30)
  • Unity中Shader编译目标渲染器

    Unity中Shader编译到目标渲染器 #pragma only_renderers 仅编译指定平台的Shader d3d11 - Direct3D 11/12 glcore - OpenGL 3.x/4.x gles - OpenGL ES 2.0 gles3 - OpenGL ES 3.x metal - iOS/Mac Metal vulkan - Vulkan d3d11_9x - Direct3D 11 9.x功能级别,通常在WSA平台上使用 xboxone - Xbox One ps4 - PlayStation 4 psp2 - PlayStation Vita n3ds -

    2024年02月05日
    浏览(37)
  • Unity Shader - UI/Default shader 优化示例

    Unity : 2020.3.37f1 Pipeline : BRP 做性能优化都是慢慢都扣出来的 当然,优先处理 top 热点的 但是一些就算不是 top,但是像素面积有多,overdraw 也多不可小觑 当然,如果你能找到性能热点,那还是优先分析一下哪些 shader 占的 cycles 最高,和 A, L/S, T, 最高 还有 register 的数量尽可能

    2024年02月07日
    浏览(31)
  • Unity中Shader变体优化

    在Shader中,一般有两个方面的优化:一方面是内存优化(即变体优化);一方面是渲染优化(即Shader中计算的优化)。我们这篇文章来了解一下Shader变体的优化。 创建一个UnlitShader,里面有一个默认的Shader #pragma multi_compile_fog 选择Shader后,点击Compile and show code 右边的小箭头可

    2024年02月04日
    浏览(28)
  • 实现窗户特效的Unity Shader解析

            本文将详细介绍一种使用Unity Shader实现窗户特效的方法。通过分析代码,我们将解释每个关键部分的作用,以及如何将其组合在一起以实现逼真的窗户效果。希望本文能为Shader编程初学者和Unity开发者提供一些有用的指导。   引言:         在游戏和虚拟现实

    2024年02月12日
    浏览(35)
  • Unity中Shader的BRDF解析(二)

    我们在这篇文章中,继续来继续解析BRDF中的高配置情况( UNITY_PBS_USE_BRDF1)下,迪士尼的漫反射计算 Unity中Shader的BRDF解析(一) 在上篇文章中,我们解析到了BRDF的具体计算 我们在该函数的最后能找到与迪士尼BRDF原则对应的程序: // Specular term // HACK: theoretically we should divi

    2024年02月04日
    浏览(29)
  • Unity中Shader的BRDF解析(三)

    在上篇文章中,我们解析了BRDF的漫反射项,这篇文章我们继续解析BRDF中的镜面反射 Unity中Shader的BRDF解析(二) 我们返回 specular ,看一下高光效果: return fixed4(specular,1); //镜面反射中的DV项的计算 //最后乘以PI的原因是因为计算 漫反射 时,等式右边没有除以PI。 //导致算出的

    2024年02月01日
    浏览(25)
  • Unity中Shader的BRDF解析(一)

    在上篇文章中,我们解析了Standard的GI实现,这篇文章我们来解析一下Standard的PBS计算。 Unity中Shader的Standard材质解析(二) 上篇文章中,主要解析了这个公式 GI漫反射 和 GI镜面反射 LightingStandard1(o, worldViewDir, gi); 在该函数中,主要进行了如下计算: s.Albedo = DiffuseAndSpecularF

    2024年02月04日
    浏览(28)
  • Unity中Shader抓取屏幕并实现扭曲效果(优化)

    对上一篇中实现的shader进行优化 1、定义结构体用于传入顶点坐标系 struct appdata { float4 vertex : POSITION; //从应用程序阶段的输入,多加一个uv,用于对扭曲纹理的采样 float2 uv : TEXCOORD; }; 2、因为UnityObjectToClipPos是从本地空间转换到裁剪空间,但是没有进行透视除法,所以需要对其

    2024年02月03日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包