首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >卡通阴影

卡通阴影
EN

Stack Overflow用户
提问于 2019-03-15 12:20:39
回答 1查看 1K关注 0票数 1

我目前正试图改变我的资产风格,从现实到低聚/卡通。

例如,我有一个卡通曲面着色器。

代码语言:javascript
运行
复制
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纹理坡道。对于对象自助式上的照明效果来说,这很好。

由于我有多个物体在我的场景中这个着色器,他们中的一些是投阴影到我的。正如你所看到的,这里的阴影不是一个斜坡,而是一个连续的渐变,因为它(可能)是在某种环境中从统一中完成的。我现在的问题是:有没有办法在全球阴影上创建这种彩色效果?类似于:我能做它的材料着色器的基础上,还是这是一个后处理效果?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-18 11:59:51

使用表面着色器:不,你不能在着色器中这样做。实际上,我认为获得一个统一的卡通效果的最好方法是使用颜色分级LUT作为后置效果。关于LUTs的伟大之处在于,您可以在photoshop中创建一个简单的效果,首先将一些酷效果应用于常规图像,直到它看起来像您想要的那样(如“后置”),然后复制效果堆栈以应用于LUT纹理,比如这一个。当你在联合中使用这个LUT时,一切都会和你的Photoshop过滤器一样。不过,我注意到的一个小警告是,一些标准LUT纹理需要垂直翻转,以便与后处理堆栈一起工作。这里是一个关于如何创建后期化LUTs的很好的教程。

如果您想直接在着色器中获得类似图恩的阴影,那么制作一个常规的前向渲染顶点/片段着色器并不难,尽管这本身需要一些关于这些阴影是如何工作的知识--我可以建议查看标准着色器源代码 (有点过时)教程。您可以从我的post 这里中找到关于如何添加阴影支持的详细信息。唯一需要更改的是在阴影掩码中添加一个类似的颜色坡道:

代码语言:javascript
运行
复制
half shadow = SHADOW_ATTENUATION(IN)
shadow = tex2D(_ShadowRamp, float2(shadow, 0));

为此,您可以从脚本中将阴影斜坡设置为全局着色变量,因此不必为每个材料分配它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55182489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档