zoukankan      html  css  js  c++  java
  • Unity3D ShaderLab 简单的立方体图反射

    Unity3D ShaderLab 简单的立方体图反射

     

    反射是着色器模拟现实环境的一个关键因素,它能使我们的着色器渲染效果更加具备视觉冲击,因为他利用了我们周围的环境,

    让着色器反射外界的场景信息并将他们反射到材质表面来模拟外部环境,所以我们会使用立方图【CubeMap】的6张纹理来模拟环境的色彩情况。

    首先,创建Shader,创建材质球,准备立方图,双击Shader,进入代码编辑器。

    如果没有立方体图可以使用天空盒暂代,或者通过Unity的Camera相机渲染到一个立方贴图,具体的创建方法,参见api:

    http://www.unitymanual.com/m/Script/Camera.RenderToCubemap.html

    Properties CGPROGRAM,再到surf,本次功能较为简单,先看代码。

     code start -----------------------------------------------------------------------

      

    Shader "91YGame/Cube1" {
    
    Properties {
    
    _MainTint("Diffuse Tint",Color)=(1,1,1,1)
    
    _MainTex ("Base (RGB)", 2D) = "white" {}
    
    _CubeMap("CubeMap",CUBE)=""{}
    
    _ReflAmount("Reflection Amount",Range(0.1,3))=0.5
    
    }
    
    SubShader {
    
    Tags { "RenderType"="Opaque" }
    
    LOD 200
    
     
    
    CGPROGRAM
    
    #pragma surface surf Lambert
    
     
    
    sampler2D _MainTex;
    
    samplerCUBE _CubeMap;
    
    float4 _MainTint;
    
    float _ReflAmount;
    
     
    
    struct Input {
    
    float2 uv_MainTex;
    
    float3 worldRefl;
    
    };
    
     
    
    void surf (Input IN, inout SurfaceOutput o) {
    
    half4 c = tex2D (_MainTex, IN.uv_MainTex)*_MainTint;
    
    o.Emission = texCUBE(_CubeMap,IN.worldRefl).rgb*_ReflAmount;
    
    o.Albedo = c.rgb;
    
    o.Alpha = c.a;
    
    }
    
    ENDCG
    
    } 
    
    FallBack "Diffuse"
    
    }

     

    code end ------------------------------------------------------------------------

     

    通过上面的简单修改,我们也获得了简单的立方体图反射效果,在Unity中可以直接查看效果。

     

    总结看来,着色器对立方图进行采样,并得到一个类似真实的反射。

    这要归功于Unity在表面着色器的Input结构体中内置的worldRefl属性,他为我们直接提供了必要的反射向量,

    帮助我们的立方图进行正确采样。我们只需要在texCube函数中使用worldRefl变量,即可得到正确的反射图。

     

     

  • 相关阅读:
    机器码信息
    Q: ossfs挂载时如何设置权限?
    js获取url信息
    快递在线下单
    nginx反向代理与负载均衡配置
    mono-apache配置
    Migrating an Existing Website from SQL Membership to ASP.NET Identity
    C# GUID转换成16位字符串或19位数字并确保唯一
    图片服务器
    王宝强离婚宋喆遭扒 黑客告诉你哪些个人信息需要保护
  • 原文地址:https://www.cnblogs.com/2Yous/p/4234975.html
Copyright © 2011-2022 走看看