为什么当我使用不应对视图作出反应的着色器在模型周围移动视图时,它会发生变化?

Chenxing Zheng

它是《 Unity Shaders and Effects Cookbook》中的一个示例。

它不应该对视图更改做出反应,但是可以。

有一些不同方向的胶囊图片。 01 02 03

有谁能救我?

我用Unity 5.0

Shader"CookbookShaders/Chapter05/LitSphere"
{
    Properties
    {
        _MainTint ("Diffuse Tint", Color) = (1,1,1,1)
        _MainTex ("Base (RGB)", 2D) = "white" {}
        _NormalMap ("Normal Map", 2D) = "bump" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf Unlit vertex:vert
        #pragma target 3.0

        sampler2D _MainTex;
        sampler2D _NormalMap;
        float4 _MainTint;

        inline fixed4 LightingUnlit (SurfaceOutput s, fixed3 lightDir, fixed atten)
        {
            fixed4 c = fixed4(1,1,1,1);
            c.rgb = c * s.Albedo;
            c.a = s.Alpha;
            return c;
        }

        struct Input 
        {
            float2 uv_MainTex;
            float2 uv_NormalMap;
            float3 tan1;
            float3 tan2;
        };

        void vert (inout appdata_full v, out Input o) 
        {
            UNITY_INITIALIZE_OUTPUT(Input,o);

            TANGENT_SPACE_ROTATION;
            o.tan1 = mul(rotation, UNITY_MATRIX_IT_MV[0].xyz);     
            o.tan2 = mul(rotation, UNITY_MATRIX_IT_MV[1].xyz);
        }

        void surf (Input IN, inout SurfaceOutput o) 
        {
            float3 normals = UnpackNormal(tex2D(_NormalMap,  IN.uv_NormalMap));
            o.Normal = normals;

            float2 litSphereUV;
            litSphereUV.x = dot(IN.tan1, o.Normal);
            litSphereUV.y = dot(IN.tan2, o.Normal);

            half4 c = tex2D (_MainTex, litSphereUV*0.5+0.5);

            o.Albedo = c.rgb * _MainTint;
            o.Alpha = c.a;
        }
        ENDCG
    } 
    //FallBack "Diffuse"
}
Chenxing Zheng

尽管没有viewDir,但UNITY_MATRIX_IT_MV会随着视图的改变而改变。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

滚动时,为什么RecyclerView中的CardView内容(以我为例)会发生变化?

为什么调出并在浏览器中显示时,存储在localStorage中的HTML会发生变化?

为什么使用循环变量时地址会发生变化?

如果我使用传播运算符,为什么状态会发生变化?

为什么在使用React Redux过滤时我的原始状态会发生变化

为什么使用生成器时const的值会发生变化?

为什么当我分别使用“ if”语句和在“ if”中使用“ if”时值会发生变化?

为什么滚动UICollectionView时我的单元格子视图框架发生变化

通过JNI在Java代码中运行EGL函数时,为什么我对EGL函数的调用会发生变化?

将映像写入驱动器时,为什么SHA 256的总和会发生变化?

为什么在“ vi”编辑器中进行编辑时inode值会发生变化?

当我将其写入文件时,为什么3D numpy数组中的值会发生变化?

为什么我移动时游戏中的事物会发生变化?Java处理环境

为什么我的按钮样式在笔记本电脑和移动设备上会发生变化

为什么当我在网格上的立方体之间添加一个空间时,整个网格大小会发生变化?

Python:为什么在使用 for 循环 for with float() 时每个元素的位置会发生变化

为什么在 tensorflow 会话中访问 keras 模型参数值会发生变化?

当我使用 bitmap.copy() 时,位图的方向会发生变化

当我运行 ```npm run dev`` 时,CSS 文件会发生变化

React:useState 向我展示了以前的状态值,而当我查看 DevTools 时它会发生变化

为什么在应用算术运算时我的“dtype”会发生变化?

为什么当我将其设为链接时,文本的位置会发生变化?

为什么当我使用动画时项目的位置会发生变化?

为什么当我转换为 ndarray 时我的日期列会发生变化

当我从孩子那里调用它时 useState 值会发生变化

当我在反应中设置其他对象的状态时,为什么我的数组值会发生变化?

为什么我的按钮使用 React-icon 组件时返回值会发生变化?

为什么我的玩家的移动速度会发生变化?(在 Unity 中使用渔网)

当我更新图像但前端显示旧图像时,图像 src 会发生变化