Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

丝绸shader的进展 #3

Open
Ruka1998 opened this issue Mar 28, 2020 · 6 comments
Open

丝绸shader的进展 #3

Ruka1998 opened this issue Mar 28, 2020 · 6 comments

Comments

@Ruka1998
Copy link
Owner

20200315

blog里面好好写,外面每天记

前几天把journey的模仿shader做了,但是特别不满意,总觉得高光看起来有种油腻的感觉,这个得想办法调整一下。

开始做布料了,在unity里面写PBR框架确实不难,但是目前各向异性的表现出了点问题,准备参考blender和filament,把微表面的部分完成之后就得把微圆柱体的模型实现一下。最后实现半透明,注意dither alpha的方法。

等布料的内容做完,就好好整理一下写一篇博客。

@Ruka1998
Copy link
Owner Author

20200318

最近在各向异性这里卡住了,算法本身没有什么,但是放到unity里面做了之后看起来效果特别诡异。微圆柱体的模型还没有开始,可能得稍微快一点。

@Ruka1998
Copy link
Owner Author

20200321

哭了,找了几天的bug,终于知道为啥了。我很自然而然的把dot的值saturated,没想到就是这里不对!难怪总觉得方向上有问题。接下来就开朗多了,赶紧做好,再把半透实现一下。

@Ruka1998
Copy link
Owner Author

Ruka1998 commented Mar 28, 2020

20200328

把remapping加到shader里,这下就是一个比较标准的pbs,之后更新到博客中。

另外在研究半透明的过程中,我发现这是一个很难一口气解决的问题。

其实Unity中半透明最普通的想法就是改RenderTypeQueueTransparent,Pass中加上Blend SrcAlpha OneMinusSrcAlpha,如果物体本身结构简单,或者多个物体间的几何关系很明确,这个可以马马虎虎做个半透明,如果结构一旦复杂,就会发现有谜一样的锯齿或者渲染顺序不对,这是因为深度写入开着的原因,于是就会想,把深度写入给关上嘛,结果乱序的问题更加严重了。

另外为了将透明物体内部的结构也表现出来,会考虑Cull Off或者Cull Front/Back,两个Pass被导师否了,于是就只剩下Cull Off

所以在建模的过程中就会尽量避免这种复杂结构。看知乎上提到过,最好的解决办法是逐片元做全排序,这当然ok,但是性能更难以在手游上满足。做alphatest dither transparent似乎是个好选择,但是我在找资料的时候都是屏幕空间的dithering,这样就没有办法表现透过布料的一边看到另一边的效果,因为dithering texture看起来一模一样,扁平感太强。

这一部分总感觉晕晕的,之后想办法搞清楚。

@Ruka1998
Copy link
Owner Author

20200329

今天找到了一篇挺好的文献,虽然有点久远,是13年的,凡是涉及到了变色的生丝,很有参考价值。

我现在有个很明显的问题,从文献到实践有点难以下手,这个正好锻炼一下。

@Ruka1998
Copy link
Owner Author

Ruka1998 commented Apr 6, 2020

20200406

找到一篇博客的实现,正是参考上面提到的文献,不说了赶紧做

@Ruka1998
Copy link
Owner Author

Ruka1998 commented Apr 7, 2020

20200407

生丝变色的效果出来了,但是计算量太大了!
想办法优化一下

想的太简单啦,我才知道原来所有透射相关的需要借助光追,难怪颜色看上去相当不通透,再想想吧。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant