黑马程序员unity教程_程序材料教程– Unity中的物质

黑马程序员unity教程

This guide is designed to briefly explain what Substance is, how to create new substance materials from a substance material asset, apply them to a mesh and edit parameters.

本指南旨在简要说明什么是物质,如何从物质材料资产中创建新物质材料,将其应用于网格并编辑参数。

w ^ 帽子是物质材料? (What are Substance Materials?)

Substance materials are procedurally generated assets, from technology developed by Allegorithmic. A ‘substance’  is basically a set of maps, defining a whole material with all channels: Diffuse, Normal, Specular, Bump, etc. 3DS Max and  Maya have substance support for rendering, but now with Unity implementation we can make use of them in real-time applications.

物质材料是由Allegorithmic开发的技术程序产生的资产。 “物质”基本上是一组地图,定义了具有所有通道的整个材质:漫反射,法线,高光,凹凸等。3DS Max和Maya都支持渲染,但是现在有了Unity实现,我们就可以使用它们在实时应用中。

为什么使用物质材料? (Why use Substance materials?)

There are a number of reasons to use of procedural materials:

使用程序材料的原因有很多:

    我从哪里获得物质材料? (Where do I get Substance Materials?)

    The Asset Store in unity (Window > Asset Store) includes free and paid substance packages available to browse.

    统一的资产商店 (“窗口”>“资产商店”)包括免费和付费的物质包,可供浏览。

    我该如何使用它们? (How do I use them?)

    To customise a substance material and apply in Unity follow these steps:

    自定义物质材料并在Unity中应用 ,请执行以下步骤:

        • Find Substance material asset you want to use (the square substance icons)

          查找您要使用的物质材料资产 (正方形物质图标)

                翻译自: https://blogs.unity3d.com/2011/08/09/substances-procedural-materials-in-unity/

                黑马程序员unity教程

                • 0
                  点赞
                • 0
                  收藏
                  觉得还不错? 一键收藏
                • 0
                  评论
                代码在文件 Properties { _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Diffuse (RGB) Alpha (A)", 2D) = "white" {} _SpecularTex ("Specular (R) Gloss (G) Anisotropic Mask (B)", 2D) = "gray" {} _BumpMap ("Normal (Normal)", 2D) = "bump" {} _AnisoTex ("Anisotropic Direction (RGB)", 2D) = "bump" {} _AnisoOffset ("Anisotropic Highlight Offset", Range(-1,1)) = -0.2 _Cutoff ("Alpha Cut-Off Threshold", Range(0,1)) = 0.5 } SubShader{ Tags { "RenderType" = "Opaque" } CGPROGRAM struct SurfaceOutputAniso { fixed3 Albedo; fixed3 Normal; fixed4 AnisoDir; fixed3 Emission; half Specular; fixed Gloss; fixed Alpha; }; float _AnisoOffset, _Cutoff; inline fixed4 LightingAniso (SurfaceOutputAniso s, fixed3 lightDir, fixed3 viewDir, fixed atten) { fixed3 h = normalize(normalize(lightDir) + normalize(viewDir)); float NdotL = saturate(dot(s.Normal, lightDir)); fixed HdotA = dot(normalize(s.Normal + s.AnisoDir.rgb), h); float aniso = max(0, sin(radians((HdotA + _AnisoOffset) * 180))); float spec = saturate(dot(s.Normal, h)); spec = saturate(pow(lerp(spec, aniso, s.AnisoDir.a), s.Gloss * 128) * s.Specular); fixed4 c; c.rgb = ((s.Albedo * _LightColor0.rgb * NdotL) + (_LightColor0.rgb * spec)) * (atten * 2); c.a = 1; clip(s.Alpha - _Cutoff); return c; } #pragma surface surf Aniso #pragma target 3.0 struct Input { float2 uv_MainTex; float2 uv_AnisoTex; }; sampler2D _MainTex, _SpecularTex, _BumpMap, _AnisoTex; void surf (Input IN, inout SurfaceOutputAniso o) { fixed4 albedo = tex2D(_MainTex, IN.uv_MainTex); o.Albedo = albedo.rgb; o.Alpha = albedo.a; o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_MainTex)); fixed3 spec = tex2D(_SpecularTex, IN.uv_MainTex).rgb; o.Specular = spec.r; o.Gloss = spec.g; o.AnisoDir = fixed4(tex2D(_AnisoTex, IN.uv_AnisoTex).rgb, spec.b); } ENDCG } FallBack "Transparent/Cutout/VertexLit" }[/code]

                “相关推荐”对你有帮助么?

                • 非常没帮助
                • 没帮助
                • 一般
                • 有帮助
                • 非常有帮助
                提交
                评论
                添加红包

                请填写红包祝福语或标题

                红包个数最小为10个

                红包金额最低5元

                当前余额3.43前往充值 >
                需支付:10.00
                成就一亿技术人!
                领取后你会自动成为博主和红包主的粉丝 规则
                hope_wisdom
                发出的红包
                实付
                使用余额支付
                点击重新获取
                扫码支付
                钱包余额 0

                抵扣说明:

                1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
                2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

                余额充值