在Unity中重新计算平面着色器的法线

时间:2018-07-12 22:42:16

标签: unity3d shader cg

我正在制作低聚水,但尝试使照明工作失败。

我制作了一个着色器,用于为模型设置颜色并沿z轴移动其顶点。

This tutorial介绍了如何重新计算着色器中的法线。但是,它使用了平滑的阴影,这在this video中有很好的解释。

对于我的低多边形水,我需要使用平淡的阴影,基于对视频的理解,这需要我将每个顶点分为3个单独的顶点,这些顶点的位置相同但法线不同。

我该如何实现?

这是目前在Unity中的外观。当我刚开始写这篇文章时,不要介意海浪的丑陋。问题在于波浪之间的阴影平滑。

enter image description here

这是我的代码:

class ViewGenerator < Rails::Generators::Base
  source_root File.expand_path('templates', __dir__)
  argument :name, type: :string
  argument :action, type: :string

  def generate_view
    template "#{file_name}.html.erb", "app/views/#{folder_name}/#{file_name}.html.erb"
  end

  private

  def folder_name
    name.underscore
  end

  def file_name
    action.underscore
  end

  def type
    name.titleize.singularize
  end

  def down_type
    name.downcase.singularize
  end

  def render_form
    "<%= render 'form', #{down_type}: @#{down_type} %>"
  end

  def render_link_back
    "<%= link_to 'Back', #{folder_name}_path %>"
  end
end</pre>

1 个答案:

答案 0 :(得分:0)

您可以为此使用几何着色器-这里有一个很好的示例,说明了它们如何工作,包括如何进行平面着色:https://catlikecoding.com/unity/tutorials/advanced-rendering/flat-and-wireframe-shading/

但是,几何着色器非常昂贵,因此我想在这种情况下,最好的选择是在Blender中打开模型,选择它,然后按“ Flat”而不是“ Smooth”作为左侧的着色选项工具栏,然后将其重新导出。这应该给您分割法线。