我目前正试图改变我的资产风格,从现实到低聚/卡通。
例如,我有一个卡通曲面着色器。
half4 LightingRamp(SurfaceOutput s, half3 lightDir, half atten) {
half NdotL = dot(s.Normal, lightDir);
half diff = NdotL * 0.5 + 0.5;
half3 ramp = tex2D(_LightingTex, float2(diff, 0)).rgb;
half4 c;
c.rgb = _LightColor0.rgb * atten * ramp *_Color;
c.a = s.Alpha;
return c;
}其中_LightingTex是一个2D纹理坡道。对于对象自助式上的照明效果来说,这很好。
由于我有多个物体在我的场景中这个着色器,他们中的一些是投阴影到我的墙。正如你所看到的,这里的阴影不是一个斜坡,而是一个连续的渐变,因为它(可能)是在某种环境中从统一中完成的。我现在的问题是:有没有办法在全球阴影上创建这种彩色效果?类似于这:我能做它的材料着色器的基础上,还是这是一个后处理效果?
谢谢
发布于 2019-03-18 11:59:51
使用表面着色器:不,你不能在着色器中这样做。实际上,我认为获得一个统一的卡通效果的最好方法是使用颜色分级LUT作为后置效果。关于LUTs的伟大之处在于,您可以在photoshop中创建一个简单的效果,首先将一些酷效果应用于常规图像,直到它看起来像您想要的那样(如“后置”),然后复制效果堆栈以应用于LUT纹理,比如这一个。当你在联合中使用这个LUT时,一切都会和你的Photoshop过滤器一样。不过,我注意到的一个小警告是,一些标准LUT纹理需要垂直翻转,以便与后处理堆栈一起工作。这里是一个关于如何创建后期化LUTs的很好的教程。
如果您想直接在着色器中获得类似图恩的阴影,那么制作一个常规的前向渲染顶点/片段着色器并不难,尽管这本身需要一些关于这些阴影是如何工作的知识--我可以建议查看标准着色器源代码这或这 (有点过时)教程。您可以从我的post 这里中找到关于如何添加阴影支持的详细信息。唯一需要更改的是在阴影掩码中添加一个类似的颜色坡道:
half shadow = SHADOW_ATTENUATION(IN)
shadow = tex2D(_ShadowRamp, float2(shadow, 0));为此,您可以从脚本中将阴影斜坡设置为全局着色变量,因此不必为每个材料分配它。
https://stackoverflow.com/questions/55182489
复制相似问题