Как написать шейдер для трехмерных рисунков (в Unity3d)?

#unity3d #shader #hlsl

#unity-game-engine #шейдер #hlsl

Вопрос:

Я пытаюсь реализовать шейдер для чертежей в трех видах для простой геометрии и протестировать этот шейдер, простой как:

 float doCos = dot(viewDirection, normalDirection);
float4 texColor;

//2. need board
bool isBackSide = doCos < 0;

if(isBackSide) {
    //_Dotted is a 2d texture the board is black dot line
    texColor = tex2D(_Dotted, i.tex.xy *  _Dotted_ST.xy   _Dotted_ST.zw);
} else {
    //_Dotted is a 2d texture the board is black entity line
    texColor = tex2D(_Entity, i.tex.xy * _Entity_ST.xy   _Entity_ST.zw);
}

//ignore some color
if(texColor.x > 0.5f) {
    discard;
}

return texColor;
  

Есть проблема, пунктирная линия становится очевидной, а затем линией объекта, когда передняя плоскость становится крутой. также я добавляю линию обода, но она не точечная, поэтому я игнорирую ее.
изображение шейдера
чтобы внести ясность, я использую два вопроса:
1. как модифицировать этот шейдер для решения проблемы с пунктирными линиями?
2. Существует ли профессиональный шейдер для трехмерных рисунков?(пока не найден)

Комментарии:

1. Что такое «шейдер для трехмерных рисунков»?

2. @NicolBolas, визуализируй линию fortend (мы можем видеть с камеры) с помощью строки объекта. что касается внутренней линии (на самом деле мы не видим), рендеринг с пунктирной линией. это объяснение может быть понятным ~

3. перепишите это объяснение в свой вопрос и сделайте его немного понятнее. что такое fortend?