官术网_书友最值得收藏!

There's more...

You can also add some controls to your normal map shader that lets a user adjust the intensity of the normal map. This is easily done by modifying the x and y components of the normal map variable and then adding it all back together. Add another property to the Properties block and name it _NormalMapIntensity:

_NormalMapIntensity("Normal intensity", Range(0,3)) = 1 

In this case, we are giving the property the ability to be between 0 and 3 with a default value of 1. Once created, you'll need to add the variable inside the SubShader:

// Link the property to the CG program 
sampler2D _NormalTex;
float4 _MainTint;
float _NormalMapIntensity;

After the property is added, we can make use of it. Multiply the x and y components of the unpacked normal map and reapply this value to the normal map variable with the bolded changes:

void surf (Input IN, inout SurfaceOutputStandard o) {
// Use the tint provided as the base color for the material
o.Albedo = _MainTint;

// Get the normal data out of the normal map texture
// using the UnpackNormal function
float3 normalMap = UnpackNormal(tex2D(_NormalTex,
IN.uv_NormalTex));

normalMap.x *= _NormalMapIntensity;
normalMap.y *= _NormalMapIntensity;

// Apply the new normal to the lighting model
o.Normal = normalize(normalMap.rgb);
}


Normal vectors are supposed to have lengths equal to one. Multiplying them for 
_NormalMapIntensity changes their length, making normalization necessary. The normalize function will take the vector and adjust it so that it is pointing in the correct direction but with a length of one, which is what we are looking for.

Now, you can let a user adjust the intensity of the normal map in the material's Inspector tab, as follows:

The following screenshot shows the result of modifying the normal map with our scalar values:

主站蜘蛛池模板: 前郭尔| 手游| 高阳县| 怀化市| 湖南省| 积石山| 延庆县| 林西县| 阿拉善左旗| 博罗县| 东兰县| 奉新县| 鄂伦春自治旗| 哈尔滨市| 棋牌| 田林县| 房产| 台中县| 武陟县| 澄城县| 东海县| 织金县| 建昌县| 德庆县| 深水埗区| 同江市| 托克托县| 增城市| 德钦县| 平定县| 永安市| 罗源县| 宜昌市| 繁昌县| 三台县| 玉屏| 黄陵县| 化州市| 新干县| 台前县| 棋牌|