float3 worldNormal = mul(T2WMatrix,tangentNormal); 最后使用效果 世界空间计算法线Shader源码 Shader "CRLuo/CRLuo_Teaching43_NormalMap_WorldSpace_Show" { Properties { [Normal] _BumpMap("法线贴图",2D) = "bump"{} _BumpScale("法线贴图强度",Range(-2.0,2.0)) = -1.0 [Toggle(_ShowTry_Key)] ...
fixed3 worldNormal = UnityObjectToWorldNormal(v.normal); fixed3 worldTangent = UnityObjectToWorldDir(v.tangent.xyz); fixed3 worldBinormal = cross(worldNormal, worldTangent) * v.tangent.w; o.TtoW0 = float4(worldTangent.x, worldBinormal.x, worldNormal.x, worldPos.x); o.TtoW1 = float4...
首先来看看Unity 3d官方文档上对WorldNormalVector的解释: float3 worldNormal; INTERNAL_DATA- will contain world normal vectorif surface shader writes to o.Normal. To get the normal vector based on per-pixel normal map, useWorldNormalVector (IN, o.Normal). float3 worldNormal; INTERNAL_DATA 是U...
float3 worldNormal; INTERNAL_DATA -世界空间中的法线向量(normal vector)。如果表面着色器(surface shader)不写入法线(o.Normal)参数,将包含这个参数。为了获得基于每个顶点法线贴图( per-pixel normal map)的法线向量(normal vector)需要使用世界法线向量(WorldNormalVector (IN, o.Normal))。 例如下面是一个我们...
//归一化法线,即使在vert归一化也不行,从vert到frag阶段有差值处理,传入的法线方向并不是vertex shader直接传出的 fixed3 worldNormal1 = normalize(i.worldNormal); //采样bump贴图,需要知道该点的斜率,xy方向分别求,所以对于一个点需要采样四次 fixed bumpValueU = tex2D(_BumpMap, i.uv + fixed2(-1.0...
2)在该材质的Unity Shader 下拉菜单中选择Skybox/6 Sided,该材质需要6张纹理 3)将6张纹理赋给材质上 上述步骤得到的材质如下图所示。 上面的材质中,除了6张纹理属性外还有3个属性:Tint Color,用于控制该材质的整体颜色;Exposure,用于调整天空盒子的亮度;Rotation,用于调整天空盒子沿 y轴方向的旋转角度。
对于卡通渲染需要的高光反射光照模型,同样需要计算normal和halfDir的点乘结果,不同的是,我们把该值和一个阈值进行比较,如果小于该阈值,则高光反射系数为0,否则返回1。 float spec=dot(worldNormal,worldHalfDir); spec=step(threshold,spec); 在上面的代码中,我们使用CG的step函数来实现和阈值比较的目的。step函数接...
对于卡通渲染需要的高光反射光照模型,我们同样需要计算normal 和 halfDir 的点乘结果,但不同的是,我们把该值和一个阈值进行比较,如果小于该阈值,则高光反射系数为0,否则返回1。 float spec = dot(worldNormal, worldHalfDir); spec = step(threshold, spec) ...
normal.z = sqrt(1 - saturate(dot(normal.xy, normal.xy))); #endif return normal; } inline fixed3 UnpackNormal(fixed4 packednormal) { #if (defined(SHADER_API_GLES) || defined(SHADER_API_GLES3)) && defined(SHADER_API_MOBILE) return packednormal.xyz * 2 - 1; ...
步骤1 – Bumped Diffuse Shader 我们创建一个新的Diffuse shader(默认新建的shader基本都是Diffuse shader),并向其中添加凹凸纹理效果(来自猫大的原话:法线贴图是凸凹贴图(Bump mapping)的一种常见应用,简单说就是在不增加模型多边形数量的前提下,通过渲染暗部和亮部的不同颜色深度,来为原来的贴图和模型增加视觉细节...