Shader 그림을 처음 그리는 방법.

5861 단어 ShaderGraphUnity
이 글은 Unity Advent Calender 2019 둘째 날의 글입니다.
아직 기술중입니다.22일 안에 기술은 끝날 예정이다.

목표 독자

  • 그림을 그리고 싶은 사람
  • 그림을 그리고 싶은데 가까이 가야 할지 모르겠어요
  • 어디서부터 좋은지 모르는 사람
  • 벽돌에 대해 각양각색의 그림을 기술할 수 있다
  • 착색기로 뭘 하고 싶은데 어떻게 해야 할지 모르겠어요
  • 이 문장에서 얻은 견해

  • 아마도 착색기의 회화 방법을 알고 있을 것이다
  • 전제 지식

  • 텍스처 UV 좌표 등을 알고 있습니다
  • 이번에 안 할 일.

  • 거친 재질의 공 내용(회화적 의미가 있음)
  • 이번 환경


    Unity2019.3.0f
    ShaderGraph 7.1.6
    LightWeightRP 7.1.6
    Unity 2018 환경에서 진행하려고 했는데 다음 이유로 ShaderGraph가 열리지 않는 상태여서 Unity 2019로 옮겼습니다.

    유니티 2019 진행 상황


    Unity의 Ver2018.4.9f에서 ShaderGraph의 4.0 이상을 사용할 때 ShaderGraph를 사용할 수 없으며 시작하지 않고 다음과 같은 오류를 토할 수 있습니다.
    상기 UnityVer와 4.0 또는 4.10을 진행할 때 적어도 내 환경에서 발생했다.
    마찬가지로 Unity Form에서는 다음과 같은 교환이 이루어지기 때문에 일어날 때 종종 있다.
    https://forum.unity.com/threads/shader-graph-crashes-when-opening-graph.661312/
    답은 유니티에게 줄 수 있는 2019의 ver는 이 시기의 LightWeight Render Pipline(Universal Render Pipe Line)에서 진행되기 때문에 그곳으로 옮겨진다
    또 유니티 2018.4.7f와 Shader Graph 4.10의 조합은 가능할 것 같고 조합에 따라 가능할 것 같습니다.

    카탈로그

  • ShaderGraph 사용 전 준비
  • 접근 방법의 기본
  • 간단한 표현
  • 예제에 대한 분해 방법
  • ShaderGraph 사용 전 준비


    메뉴 모음의 Windows/PackageManager에서 PackageManager 열기

    ShaderGraph 및 UniversalRP를 설치합니다.
    ShaderGraph를 사용할 때 PipeLineAsset을 설정해야 하기 때문에
    프로젝트 화면에서 마우스 오른쪽 버튼 클릭 > PipeLine/PipeLineAsset 만들기/렌더링/일반 렌더링을 선택합니다.

    생성되면 다음 파일이 생성됩니다.
    UniversalRenderPipelineAsset.asset
    UniversalRenderPipelineAsset_Renderer.asset
    이 두 가지 중 Universal Render Pipeline Asset.asset 열기
    메뉴 모음의 편집/항목 설정에서 다음 화면에서 그래픽이라는 항목을 선택한 다음 빨간색 상자 부분으로 드래그합니다

    그런 다음 Project 화면 섹션에서 Create/Shader/UnlitGraph 를 마우스 오른쪽 버튼으로 클릭합니다.재료 볼 도면 파일을 두 번 클릭합니다.
    지금 준비 완료.

    방법의 기초


    재료 볼 드로잉에서는 요소 분해가 중요합니다.
    예를 들어, 다음과 같은 경우(세로로 이동하는 동안 줄무늬가 깜박이는 착색기)
    이번에 만든 거 여기 있어요.

    줄무늬는 이동하면서 반짝일 수 있다.
    요소로 삼다
    - 깜박임
    - 이동할 스트라이프
    - 세로 간격 표시(스트라이프)
    - 이동
    -α활용단어참조
    감각적 요소.
    이러한 요소의 조합을 통해 하고 싶은 것에 대해 어떤 방법을 해야 하는지 알 수 있다.
    그렇다면 각자의 최소 부분에서 어떤 요소에 따라 조합될까?

    깜박이다


    노드는 다음과 같습니다.
    Time + Sin (+ Absolute)
    Sin 노드는 지정된 값을 Sin 표현식에 적용합니다.
    0-2 사이에 -1에서 1의 값은 출력으로 되돌아오기 때문에 아래의 값은 출력으로 존재한다.
    위의 두 노드를 조합하여
    Sin에게 Time 값을 부여하고 Sin이 내보내는 내용을 색상으로 처리하고 내보내면 깜박일 수 있습니다.
    왜 반짝일까요?
    Sin 노드에서 출력된 값은 항상 -1~1의 값을 출력합니다.
    색상 정보(X, Y, Z, W(알파)의 Sin 노드 출력으로 설정합니다.
    프로그램상
    float c = sin(Time.deltaTime);
    Vector4(c,c,c,c);
    이런 인상인가요?
    하지만 결국 하얀 타이밍은 0이 넘는 타이밍이다
    Sin에서 출력한 값이 음수일 경우 검은색이므로 길고 어두워 보입니다.

    따라서 Absolute 노드가 유용합니다.
    Absolute는 입력 값의 절대 값을 출력하는 데 사용됩니다.
    절대값이란 대충 말하면 음값이라도 음값의 수치만 꺼낸다.
    엄밀히 말하면 좀 다르기 때문에 마음에 들면 조사해 보세요.
    이 Absolute를 사용하면 방금 음수 부분이 양수가 됩니다.
    아래와 같다.
    TODO: Sin 값을 변경합니다.

    줄무늬


    줄무늬를 만들 때 어떤 방법이 있을까요?
    줄무늬를 만들 때 입력에 공을 들여야 한다.
    최종 출력과 큰 관계가 있기 때문에 원인은 매우 간단하다.
    이 줄무늬는 최종 출력할 때 이 줄무늬 자체를 사용하기 위한 것이다.
    '그곳에 있을 때 이 색깔을 발라야 한다'는 상태에 있어야 한다.
    그곳에 있을 때 정보의 방식은 매우 많았다.
    빛이 비치지 않는 상태
    ・ UV 좌표의 위치
    ・(Local World) 위치의 해당 위치
    그곳의 물건을 확인하려면 반드시 색을 칠해야 한다
    장소를 나타낼 때 이번에는 UV 좌표를 사용합니다.
    UV 좌표는 기본적으로 XY 섹션에 0-1의 값을 포함하기 때문에 이 범위를 사용합니다.
    하지만 이걸 그대로 사용한다면 0-1이므로 어두운 부분에서 서서히 하얗게 변하는 느낌은 다음과 같다.

    이게 한 장에 여러 번 나오면 스트라이프가 될 것 같아요.
    형상상 아래와 같다.

    그것을 조립하는 데 사용되는 착색기 도표는 다음과 같다.

    수신된 UV 좌표는 시종 0-1에 불과하기 때문에 multiply로 5배 증가하여 0-5의 값으로 변경합니다.
    출력 0-5는 모듈 노드에서 지정한 값의 나머지를 나눈다.
    이번에는 1, 0-5의 값을 나누어 0-1만 출력한다.
    예를 들어, UV 좌표 0.1과 0.5의 경우
    0.1->0.5->0.5
    0.5->2.5->0.5
    이런 느낌.
    스트라이프가 완성됐습니다.

    이동하다


    만약 이번이라면, 입력 자체의 값은 변화가 필요하다.
    결국 지속적인 변화가 필요하다.
    이번에는 시간 부분을 사용하기로 했다.
    Modulo에 제공하기 전에
    다음 그림과 같습니다.

    그러면 출력 스트라이프의 위치가 오프셋되어 스트라이프가 이동하는 것처럼 보입니다.
    원칙적으로 아까 줄무늬인데 모듈에 들어가기 전에 시간값을 추가했습니다.
    그러면 0-5 + Time 섹션의 값이 1로 나뉩니다.

    α활용단어참조


    α응용 프로그램 자체가 최종 출력 부분이기 때문에 UnlitMaster 노드에 연결된 알파 부분을 통해 진행할 수 있다.

    좋은 웹페이지 즐겨찾기