c# 코드는 컴파일 하고 적용하는데 되게 오래걸리는데
쉐이더는 바꾸면 바로바로 적용 되잖아?
쉐이더 코드는 짧으니까 컴파일이 빠른거 이해는 되지만
오브젝트에 적용하는 것도 순식간에 되는데 적용하는데 비용이 별로 안 드나?
그리고 씬 뷰에서 바로 적용되는 것도 궁금함.. 실행도 안 했는데?
c# 코드는 컴파일 하고 적용하는데 되게 오래걸리는데
쉐이더는 바꾸면 바로바로 적용 되잖아?
쉐이더 코드는 짧으니까 컴파일이 빠른거 이해는 되지만
오브젝트에 적용하는 것도 순식간에 되는데 적용하는데 비용이 별로 안 드나?
그리고 씬 뷰에서 바로 적용되는 것도 궁금함.. 실행도 안 했는데?
C#은 전체적인 어셈블리 컴파일이고 HLSL은 단일 쉐이더 프로그래밍파일이라 컴파일 속도자체가 티 안나게 빠른거일것같음. 그리고 GPU에 올라가는 바이너리형식이다보니 중간과정이 좀 다르지않을까
C# -> IL -> Native HLSL(GLSL) -> Native 으로 알고있고 씬뷰에 바로 적용되는건 렌더링은 항상 실행되고있어서 그럼. C#도 ExecuteInEditMode attribute걸어두면 대충 무슨느낌인지 감이올거임
ㅇㅎ 결국 씬 자체도 렌더링 되는 것이니 쉐이더는 게임 실행 안 해도 적용되는 것은 이해함 근데 아무리 그래도 컴파일 후에 적용하는 속도가 c#코드랑 비교도 안 되게 빠른데 GPU 속도가 좋아서 그런 건가?
컴파일후에 적용되는 속도라는게 정확히 어떤걸 의미하는지 모르겠음. 보통 컴파일후에 적용되는걸 확인하려면 Play Mode로 진입해야할탠데 수정-컴파일하고 확인되는건 에디터니까 에디터 기준으로 설명하면, 코드기반 IMGUI 렌더링자체가 무거운편임.
쉐이더는 매 프레임마다 파이프라인 중에도 계속 교체하면서 실행하기 때문에 수정하고 컴파일 성공하면 즉시 교체되는거
아하! 다들 고마워요
c#도 asse;mbly가 나뉘어 있으면 개별컴파일로 빨라질 수 있음. 빠르고 느리고는 그냥 컴파일 양의 차이고 쉐이더도 c#이랑 분리된 별개의 것이니까 그냥 빨리되는거지. 그리고 opengl같은 그래픽라이브러리를 함 해본적이 있다면 알겠지만, compiled shader도 그냥 사용가능하기 떄문에 런타임중에서도 쉐이더 갈아끼우는게 가능함. 무슨 비용을말하는진 모르겠지만, 컴파일만 된다면 그냥 바로 적용가능하다는말