본문 바로가기
(HLSL)아티스트를 위한 URP 셰이더 Shader #6 - 스위즐링 원래는 셰이더 그래프랑 코드랑 완전히 합을 맞춰서 동일한 내용을 동일한 타이밍으로 연재하려 했어요. 우와 이상적이고 멋져 보이잖음. 셰이더 그래프로 뙇 설명하고 코드로 똑같은거 뙇 설명하고 캬 멋진 나의 모습 ...사실 지금도 그러려고 하고 있어요 하지만 노드 사용법이 들어가니까 꼬이더군요. 노드에서는 감마 설명이 안되면 진도 자체가 안나가는 부분이 있어서. 게다가 노드는 기본 사용법 설명이 있다 치더라도 코드는 기본 설명을 해버리려면 ... 어디서부터 해야 돼 아니 사실 할 수는있는데, 그렇게 되면 이놈의 기초에서 헤어나올 수 없게 되기 때문에요, 블로그 쓰는것도 좀 재미가 있어야 하는데 사실 기초는 그다지 재미가 없거든요. 빨리 중급 셰이더 들어가고 싶지 ... 그러니 기초는 좀 듬성듬성 뛰어 넘겠습.. 2021. 8. 28.
(셰이더그래프)아티스트를 위한 URP 셰이더 Shader #7 - 출력 실습 와 간만입니다. 바쁜 일이 있으면 부정기적으로 이렇게 중지될 수 있어염. 이거 뭐 블로그로 쓰는건 실시간 반응같은게 없으니 재밌었는지 힘들었는지 알 수가 없네. 도네해달라는 말 안할테니까 리플좀 써봐요 사랑한다고 자 저번 시간에 스위즐링을 배웠으니까, 이번에는 초큼 실습을 하죠. 이번에는 인터페이스를 만들고, 거기서 값을 받아와서 결과를 내는 방법을 알아보도록 하겠습니다. 뭐, 이것도 대박 간단해요 사실 여기까지는 사람 무시하냐 수준이긴 하지. 프로퍼티 연결하기 우선 여기에서부터 시작하도록 해 봅시다. 새로운 메터리얼을 만들고, 셰이더를 만들고, 메터리얼은 오브젝트(공) 에 입히고.. 일단 붉은 색 노드를 만들어서 연결해 보았어요. 노드를 프로퍼티로 승격시키기 인터페이스 (프로퍼티) 를 만드는 법은 이전.. 2021. 8. 24.
(셰이더그래프)아티스트를 위한 URP 셰이더 Shader #6 - 스위즐링(swizzling) 간만입니다. 주력컴으로 쓰는 게이밍 노트북의 배터리가 부풀어서 AS 갔다 오느라고 늦었습니다 게다가 주말에 000 0000 00000 도 있었고 그럼 오늘로 기본 이론 설명은 끝날려나요? 어서 빨리 실습으로 나가고 싶군요. 어쨌거나 답답해도 그냥 그런가 보다 하세요 어쩌겠어 할 얘기는 해야지 오늘은 swizzling입니다. swizzling 이란 뒤섞다의 의미입니다. 셰이더의 데이터들은 전부 부동소수점 (float) 이기 때문에 이것저것 가지고 놀기 좋아요 뭔가 요즘엔 int도 되고 half가 어쩌고 하지만 그냥 일단 저렇게 생각해도 별 문제 없.. 그래서 이전에 설명했듯이, Vector4 나 Vector3는 이런식으로 되어 있는거라고 생각하시면 편합니다. 뭐랄까. 규격이 있는 택배박스가 xyzw라는 이.. 2021. 8. 6.
(셰이더그래프)아티스트를 위한 URP 셰이더 Shader #5 - 노드 기본 조작 / 연산과 감마2 자 그럼 그 다음 얘기를 또... 칼라 노드의 감마공간 변환 감마에 대해서는 보고 오셨나요? 이게 설명하기가 참 거시기 해서 거시기 하고 거시기 한데다가 코드에서는 잘 모르고 넘어갈 수 있는 개념이라 ( 셰이더에서는, 노드에서는 칼라 노드가 있지만 코드에서는 칼라 변수라는게 따로 없거든요. ) 첨에 이해하기 힘들단 말이죠 그러니 간단히 지난 시간 감마 얘기를 정리해 봅시다. 저번 편의 영상을 보셨다는것을 전제로 하고요. 그리고 또한, 칼라는 숫자와 같다라고 하는 기본 전제를 알고 있다는 데에서 시작해야 해요. 그럼 두 개의 노드를 불러 보겠습니다. 하나는 칼라 노드로 회색, 또 하나는 벡터 3 (float3) 로 0.5, 0.5, 0.5 어떻게 노드를 부르지? 하시는 분은 아래 영상을 따라하시면 됩니다... 2021. 7. 25.
(셰이더그래프)아티스트를 위한 URP 셰이더 Shader #5 - 노드 기본 조작 / 연산과 감마 아티스트가 셰이더를 할 때에 제일 중요한 것이 있습니다. 바로 '색을 숫자로 인식하는 것' 왜냐면 어차피 셰이더라고 하는것은 색을 출력하는 것이고, 최종적으로 색을 출력하려면 들어오는 색들을 가지고 '연산' 해서 출력해야 하거든요 그러니 셰이더를 배울 때에는 '색' 을 연산하는 법을 익혀야 합니다. 즉 일단 '색' 을 숫자로 인식해야 뭘 할 수 있다는 말이죠! 수 학 아 그래요 숫자라고 하니까 수학같죠 사실 셰이더의 본질은 수학이라고도 하고. 생각하기도 싫을 거예요. 하지만 직접 해보면 어렵지 않아요. 기초 셰이더는 기껏해야 0~1 정도만 사용하고, 사칙연산 정도면 충분하거든요! 물론 고급 기술이 되면 어려워지지만 그건 알게 뭐야 흠흠.. 자 그럼 셰이더 그래프로 연산을 해 보겠습니다. 셰이더 그래프 준.. 2021. 7. 24.
(공통이론)아티스트를 위한 URP 셰이더 Shader #4 - 색과 숫자 우후후 안녕하살법! 이전 시간을 통해 셰이더 그래프와 코드에서 인터페이스 - 프로퍼티스- 를 만드는 방법을 알아보았어얌. 오늘부터 본격적 시작을 할건데, 이론을 먼저 하나 깔고 갈 필요가 있어서 간단히 이론 소개부터 할께염. 이론도 원래는 비트 얘기부터 하고 막 그래야 하지만 .. 길면 지루할테니까 어떻게 하면 쉽고 재미있고 간단하게 얘기할거냐만 고민하고 있는지라 깊은 얘기는 마구 건너뛸 거예염 그래서 어디부터 하냐면... 여기부터 할 거예요. TV 있죠 TV ? 모니터도 좋고. 하여간 뭐든 좋으니 커다란 모니터나 TV를 놓고... 핸드폰 카메라로 좌아악 땡겨서 사진을 찍어보세요 오호라...? 픽셀이 보이는군요? 근데 픽셀이 좀 이상하죠? 픽셀은 포토샵에서 보는 흰색 사각형이고 그런거 아니었어? 자 이게.. 2021. 7. 23.
(HLSL)아티스트를 위한 URP 셰이더 Shader #3 - 프로퍼티스2 요 앞에 Float 하나 넣는걸 해봤고, 그걸 Range로 바꾸는 걸 해봤습니다. 대충 풀 코드의 상태는 이런 상태겠지요. 자아, 역시나 오늘도 아래에서 Properties { } 만 신경쓰시면 됩니다. Shader "One/Two/Three/Four/TestShader" { Properties { _TestFloat("테스트 플롯이다뇨", Range(0,1)) = 0 } SubShader { Tags { "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" } Pass { HLSLPROGRAM #pragma vertex vert #pragma fragment frag #include "Packages/com.unity.render-pipelin.. 2021. 7. 22.
(HLSL)아티스트를 위한 URP 셰이더 Shader #3 - 프로퍼티스1 후후후 이번에는 코드로 해 봅시다. 프로퍼티가 뭔지는 지난 시간에 말했으니까? 자 일단 코드를 다시 보죠 Shader "One/Two/Three/Four/TestShader" { Properties { } SubShader { Tags { "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" } Pass { HLSLPROGRAM #pragma vertex vert #pragma fragment frag #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" struct Attributes { float4 positionOS : POSITION; }; stru.. 2021. 7. 21.
(셰이더 그래프)아티스트를 위한 URP 셰이더 Shader #3 - 프로퍼티스 2 다른 프로퍼티 만들기 Float 하나 만들었으니까, 다음 진도는 좀 더 빠르게 나갑시다. 이게 프로퍼티가 생각외로 심오하게 되어 있어요. 게다가 아직도 발전해 나가는 느낌입니다. (발전이라고 쓰고 미완성이라고 읽지 말기...!) 제법 깊은 영역까지 다루게 되어 있는데, 그걸 지금 다 배우는건 의미가 없습니다. 그러므로 지금은 초 빠르게 자주 쓰는 것만!!! 이겁니다. 일단 이것만 알면 돼요. Gradient나 Sampler State는 사실 프로퍼티라고 부르기도 그렇고.. Texture2D Array나 Texture3D, Virtual Texture 는 그냥 상쾌하게 바로 쓸 수 있는 것도 아니고... 특별한 프로그램 거쳐야 하고 특별한 상황에서 써야 하는거고 .. Matrix도 프로퍼티라고 부르기 힘들.. 2021. 7. 20.
(셰이더그래프)아티스트를 위한 URP 셰이더 Shader #3 - 프로퍼티스 1 이제 프로퍼티스(Properties)입니다. 빈껍데기 인터페이스를 만드는 거예요. 작동은 안하지만 인터페이스 만드는건 재미있잖아요? 일단 이뻐야 재밌으니까 말이죠. 프로퍼티 만들기 그럼 지금부터 프로퍼티들을 만들어 볼 거예요. 사용할 창은 블랙보드랑 그래프 인스펙터. 프로퍼티의 전 기능을 다 설명할 수도 있지만, 그렇게 설명했다가는 초보도 다 도망가고 이 글도 수십페이지가 될거고 언제 쓸지도 모르는 고급 기능까지 설명하게 될테니 일단 많이 쓰는 기능만 설명하는 식으로 할게요. 백과사전으로 나열하는건 차라리 메뉴얼을 보시는게 낫고요, 어차피 전부 다 안써요 (...) 나도 안써본게 많어.. 혹시 저 두 창이 안보이면 셰이더 그래프에서 이걸 눌러 켜주세요 일단 블랙보드에서 + 버튼을 누르면 만들 수 있는 인.. 2021. 7. 16.
(HLSL)아티스트를 위한 URP 셰이더 Shader #2 - 셰이더 이름바꾸기 그럼 이번에는 똑같은 걸 코드로 해보죠. 셰이더 이름 바꾸는 거예요. 이전 강의를 안보신 분은 2021.07.04 - [튜터리얼_스터디] - 아티스트를 위한 URP 셰이더 Shader #1 아티스트를 위한 URP 셰이더 Shader #1 셰이더 처음 만들기 (노드버전) 그럼 맨 먼저 시작해 보죠. 이론 같은거야 좋은 책들이 많을테고, 여기 오시 분들은 그래요.. 서론 싫어하는거 다 안다고요... 하긴 저도 유투브에서 5분 설명할거 chulin28ho.tistory.com 여기에 가서 보시면 되고요, 테스트 코드 파일도 다운받을 수 있으니 그걸 쓰시면 돼요 그래봤자 뭐 이름바꾸는거라서... ㅎㅎㅎ 잠깐 정리해 보자면요. 이런 상태예요. NewUnlitShader.shader 파일에 저 코드가 들어 있고, .. 2021. 7. 15.
(셰이더 그래프)아티스트를 위한 URP 셰이더 Shader #2 - 셰이더 이름바꾸기 오늘은 프로퍼티쪽을 건드려 보겠습니다. 프로퍼티가 뭐냐면요 .. 별 거 아니예요 인터페이스예요. 프로퍼티 = 인터페이스 왜 그 저 셰이더 만들면 이런거 있잖아요? 이게 프로퍼티예요. 텍스쳐를 넣고 수치를 조절하고 칼라를 넣고 .. 조절할 수 있는 기능들 말이지요. 위에 저건 커스텀 인터페이스로 만든거라 막 생긴것도 거창하고 화려하고 그런데, 처음 시작하는 우리는 저정도까지는 아니고 기본적인 것들로 만들어 보도록 하죠. 미리 말씀드리지만 이건 껍데기라서 동작하진 않습니다. 그리고 프로퍼티들을 만들기 이전에, 셰이더 이름부터 바꿔봅시다. 보통 이런거 대충 슥 하고 넘어가는데... 초보들한테는 이런 부분이 중요해요... 처음부터 막히면 아주 하기 싫거든. 게다가 이름바꾸는건 중요합니다. 셰이더가 많아지면 내가.. 2021. 7. 8.
반응형