冰材质2-iceRefrationVF

2024-08-20 16:18
文章标签 材质 icerefrationvf

本文主要是介绍冰材质2-iceRefrationVF,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在U4.6.3版本里报错,估计在U5.0版本以上才可以吧


Shader "Custom/iceRefrationVF" 

{
Properties {
   _Color ("Main Color", Color) = (1,1,1,1)
   _MainTex ("BaseTex", 2D) = "white" {}
   _BumpMap ("Normalmap", 2D) = "bump" {}
   _BumpAmt ("Distortion", range (0,1)) = 0.12


}


Category {


   // We must be transparent, so other objects are drawn before this one.
   Tags { "Queue"="Transparent" "RenderType"="Opaque" }
    zwrite off
    
   SubShader {


       // This pass grabs the screen behind the object into a texture.
       // We can access the result in the next pass as _GrabTexture
       GrabPass {
           Name "BASE"
           Tags { "LightMode" = "Always" }
       }


       // Main pass: Take the texture grabbed above and use the bumpmap to perturb it
       // on to the screen
       Pass {
           Name "BASE"
           Tags {"RenderType"="Opaque" "LightMode" = "Always" }
           


        CGPROGRAM
          #pragma vertex vert_surf 
  #pragma fragment frag_surf 
  #pragma multi_compile_fog 
  #include "UnityCG.cginc"
  #pragma target 3.0


       struct appdata_t {
           float4 vertex : POSITION;
           float2 texcoord: TEXCOORD0;
       };


       struct v2f {
           float4 vertex : SV_POSITION;
           float4 uvgrab : TEXCOORD0;
           float2 uvbump : TEXCOORD1;
           float2 uvmain : TEXCOORD2;
           UNITY_FOG_COORDS(3)
       };


       float _BumpAmt;
       float4 _BumpMap_ST;
       float4 _MainTex_ST;


       v2f vert (appdata_t v)
       {
           v2f o;
           o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
           #if UNITY_UV_STARTS_AT_TOP
           float scale = -1.0;
           #else
           float scale = 1.0;
           #endif
           o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*scale) + o.vertex.w) * 0.5;
           o.uvgrab.zw = o.vertex.zw;
           //以上7行可以用o.uvgrab = ComputeGrabScreenPos(o.vertex);代替
           o.uvbump = TRANSFORM_TEX( v.texcoord, _BumpMap );
           o.uvmain = TRANSFORM_TEX( v.texcoord, _MainTex );
           UNITY_TRANSFER_FOG(o,o.vertex);
           return o;
       }


       sampler2D _GrabTexture;
//      float4 _GrabTexture_TexelSize;
       float4 _Color;
       sampler2D _BumpMap;
       sampler2D _MainTex;




       half4 frag (v2f i) : SV_Target
       {
           // calculate perturbed coordinates
           half2 bump = UnpackNormal(tex2D( _BumpMap, i.uvbump )).rg; 
           // we could optimize this by just reading the x & y without reconstructing the Z
           float2 offset = bump * _BumpAmt ;
           i.uvgrab.xy = offset * i.uvgrab.z + i.uvgrab.xy;


           half4 col = tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(i.uvgrab));
           half4 tint = tex2D(_MainTex, i.uvmain)*_Color*2;
           col *= tint;
           UNITY_APPLY_FOG(i.fogCoord, col);
           return col;
       }
       ENDCG
               }
           }


           // ------------------------------------------------------------------
           // Fallback for older cards and Unity non-Pro


           SubShader {
               Blend DstColor Zero
               Pass {
                   Name "BASE"
                   SetTexture [_MainTex] { combine texture }
               }
           }
       }


}

这篇关于冰材质2-iceRefrationVF的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1090556

相关文章

自定义渲染组件及材质 / 引擎源码 / Dashboard

B站视频: Cocos Creator 3D 官方中文教程——《快上车3D》案例添加链接描述 (请点击跳转) cocos creator 1.x shader 没有经过包装,可以直接定义shader,替换 sprite 原来的 shader,可以参考之前博客; cocos creator 2.x 引入了材质系统,使用 shader 必须通过材质,这里介绍下如何使用自定义 shade

钢铁百科:NM360钢板材质、NM360机械性能、NM360韧性焊接性能

一、NM360钢板材质: NM360是一种高强度耐磨钢板,具有良好的综合机械性能和耐磨性能。它通常用于制造各种机械设备的耐磨部件,如挖掘机斗齿、破碎机锤头、磨煤机叶片等。NM360钢板的化学成分和热处理工艺被精心设计,以确保其在恶劣工作条件下的耐久性和可靠性。在选择NM360钢板时,应考虑其硬度、韧性和可焊接性等特性,以满足特定应用的需求。 二、NM360执行标准: NM360钢板执行标准为最新G

钢铁百科:16MnDR钢板力学性能、16MnDR化学成分、16MnDR材质分析

16MnDR钢板是一种低合金高强度容器用钢,具有优异的力学性能和低温韧性,广泛应用于多个行业。以下是对其材质、执行标准、化学成分、力学性能、交货状态、应用范围、常用规格及总结的详细阐述: 一、16MnDR材质概述 16MnDR钢板中,“16Mn”表示钢板中锰含量大约在1.20%~1.60%,这是一种强化元素,有助于提升钢板的力学性能;“D”表示低温;“R”表示压力容器。因此,16MnDR钢板特别适

UE 【材质编辑】自定义材质节点

使用UE的材质编辑器,蓝图提供了大量的节点函数: 实际上,这是一段封装好的包含一串HLSL代码的容器。打开“Source/Runtime/Engine/Classes/Material”,可以看到很多不同节点的头文件: 照葫芦画瓢 以UMaterialExpressionArccossine为例,我们可以定义自己的一个节点: .h // Copyright Epic Games, I

UE 【材质编辑】自定义ShadingMode

【UE 4.27.2】 在UE中提供了多种多样的ShadingMode,相当于一种风格化的处理方案(整体全面的流程调整),切换ShadingMode可以看到不同的显示效果: 通过简单的拓展,我们可以实现自定义的ShadingMode,使得我们切换到自己的ShadingMode时可以直接应用上我们自己的一套风格化效果(极大的提高材质编辑效率)。 1.编辑器添加ShadingMode选项

UE5 摄像机图像采集到材质 映射到 UI 和 物体表面

一.创建SceneCapture2D的组件 二.创建用于 映射的 贴图 三.将RenderTarget贴图放到SceneCapture2D的摄像机上Scene Capture的TextureTarget 四.这个时候的映射贴图,产生的材质可以直接。放到Plane上。 五,但是如果要用于UI,还需要更改SceneCapture2D的摄像机的CaptureSource为 Fin

UE【材质编辑】Shader模板

【UE 4.27.2】         在UE中双击材质球会进入材质编辑界面。PBR的材质参数呈现为材质蓝图的各个节点,提供数据源,传递进材质。最后材质对其进行组织,呈现为VS,PS等着色器代码,基本流程: 本文会刨析在UE4.27.2中材质模板是如何应用的。 1.认识编辑器中的材质         打开任意材质球,双击进入材质编辑面板: 此界面形象展示了材质参数传递到材质(实例

淘宝商品详情API返回值中的商品材质与成分

淘宝商品详情API返回值中关于商品材质与成分的信息,通常作为商品属性的一部分进行返回。这些信息对于消费者了解商品的质量、适用场景以及做出购买决策至关重要。以下是对淘宝商品详情API返回值中商品材质与成分的详细解析: 一、商品材质与成分的表示方式 直接列出:在API返回的JSON或XML格式数据中,商品材质与成分可能会直接以文本形式列出,如“材质:棉100%”、“成分:水、甘油、丙二醇”等。

Unity(2022.3.41LTS) - 网格,纹理,材质

目录 零.简介 一、网格(Mesh) 二、材质(Material)  三、纹理(Texture) 四、三者之间的关系 零.简介 在 Unity 中,网格(Mesh)、纹理(Texture)和材质(Material)是构建游戏世界不可或缺的重要组成部分,它们共同决定了游戏场景和物体的外观表现。 一、网格(Mesh) 结构组成: 顶点(Vertices):是网格的基

cesium 水波纹扩散圆材质

cesium 水波纹扩散圆材质 var entity = new Cesium.Entity({position: Cesium.Cartesian3.fromDegrees(116,39,0),ellipse: {semiMinorAxis: 1000,semiMajorAxis: 1000,height: 10,material: new WaterDiffusionEntity