1. ∞™ ≠ 52Cº 2020-05-19

    编辑的时候点击插入视频按钮,直接把 B 站地址粘贴进去就行了

    • 阿创 2020-05-20

      @∞™ ≠ 52Cº:......我的错,居然现在才看到有那个视频图标/(ㄒoㄒ)/~~,谢谢大佬

  2. Thuris 2020-05-20 微信会员

    有几个问题,1这种独立描边的目标是可变的,所以处理方式应该是给有可能进行描边处理的物体shader都安排上stencil 配置,当其需要进行stencil处理时,代码更改其stencil 值?
    2 博主有没有试过用commandbuffer进行处理,之前有类似思路,但无法确定commandbuffer中的framebuffer,无法实现,不知为何。
    最后很感谢博主的分享。很棒。

    • 阿创 2020-05-21

      @Thuris:emm 我的初步想法是这样的:
      1、通过代码来修改Stencil值是可以的。我之前不知道在哪看过说游戏里的鼠标悬停在物体上,物体高亮描边好像就是这个原理(例子待考证)
      2、command buffer我没怎么用过,但是看了一下其他资料,个人感觉command buffer和处理方式后处理很像。而且好像不太需要拿到frame buffer呀....感觉先将相机渲染的画面直接存到一张RT上面,再把RT传递给shader做计算,然后把结果通过command buffer绘制到屏幕上就好了。
      有可能的问题就是我文章中后面链接里提到的,command buffer可能会丢失stencil信息,你指的是这个问题吗?
      我也没有试验过,到时找个时间试试康,学习学习~,或者大佬实验后也告诉告诉我呗~~

      最近由 阿创 修改于:2020-05-21 10:54:48
    • Thuris 2020-05-21 微信会员

      @阿创:2.CommandBuffer.Blit() isn't stencil buffer friendly 论坛链接之前看过,个人英文不好的痛处显现了出来。看里面提问者蛮多吐槽unity这方面文档不足。我也好想吐槽unity文档信息不足的问题。源码也不给。导致冷门内容探索起来太麻烦。
      个人实验下来commandbuffer在2019.3版本 stencil几乎不能用,只有在commandbuffer.blit(texA,texB,material)
      中texA 与TexB 有一个是BuiltinRenderTextureType.CameraTarget 的前提下,相关shader中的stencil处理能奏效。 否则shader 中stencil处理都无法奏效,只会得到张黑图(即空图RGBA(0,0,0,0)).
      另外博主这种描边适配的是物体影子轮廓描边, 想精细描边效果的话对 Shader "Unlit/StencilProcess" 最后继续返回原 fixed4 color = tex2D(_MainTex,i.uv); 颜色。以及 Shader "Unlit/OutlinePostProcessByStencil" 描边检测修改成可以检测任何边缘颜色的方法, 这样可实现精细描边- 我用这种方式给技能(粒子系统)进行了描边。

      最近由 Thuris 修改于:2020-05-21 16:53:14
    • 阿创 2020-05-22

      @Thuris:啊原来是这样,又学到了~~ 还有最近UE5消息出来后,Unity被吐槽的就更多了哈哈哈哈哈
      我也到时找个时间试试康~

      最近由 阿创 修改于:2020-05-22 09:58:31

您需要登录或者注册后才能发表评论

前往登录页面