요런 경우인데, 


사실 모바일 중심에다가 URP 에서 누가 스피드 트리를 쓰나.. 싶은 한국 환경에서 별로 관심없을 내용인게 맞긴 하지만 

어쨌건 나는! 스피드 트리를 쓰는데 엠비언트가 검게 나와서!!!

라이트 프로브도 구워보고 별짓 다 해 봤지만 결론으로 그냥 엠비언트가 안나온다는 결론에 도달. 

SH 연산이 패스되고 있구나.. 싶은 생각이 들었던 것이었다. 


그래서 일단 구글링.. 을 해보니 

과연 있었네요. 역시 구글링


https://forum.unity.com/threads/still-no-speedtree-support.894025/?_ga=2.107763586.1470992922.1597595493-1770143334.1577213009#post-5946692


일단 내용은 여기 

여기의 두 셰이더만 받아서 기존 URP 내장의 스피드트리 셰이더만 바꿔주면 됩니다. 




저 두 개를 받아서 교체하는 법은 다음과 같습니다. 

아래 폴더를 찾아갑니다. 





빌보드 셰이더를 제외하고 SpeedTree7 에 관련된 셰이더는 전부 복사합니다. 빌보드는 뭐 별 문제가 없어서. 

당연히 메타파일들은 가져오지 않도록 조심. 






이 파일들을 Asset 폴더 아래의 적당한 폴더에 카피해 놓습니다. 

패키지 폴더에 그냥 두면, 껐다 켤 때마다 복구하려 덤벼들기 때문에 이렇게 따로 복사해 주는 겁니다. 

이제 이걸 수정하면 끝. 





그리고 이 카피해 놓은 두 개의 셰이더를 참고해서 수정합니다. 

간단하게는 저 구글링한 두 셰이더를 카피해서 덮어쓰기 하는게 최고지요. 

굳이 수정하겠다면 아래 글을 참고하시면 되겠지만 저건 저만 보려고 만든거라 보기 힘드실테고, 저 셰이더를 분석하시는게 낫습니다.

 



그리고 생성되어 있는 SpeedTree Material을 전부 선택하고, 셰이더 이름을 SpeedTree7(Fixed)로 바꿔줍니다. 

새로 카피한 셰이더는 친절하게도 이름이 (Fixed)로 바뀌어 있어요 . 겹치지 않게 하려는 배려겠지요. 




그러면 끝....








아래는 분석용 백업글입니다. 

저만보려고 대충 썼어요 







일단 SpeedTree7.shader 파일의 
 #include "SpeedTree7Input.hlsl"

 #include "SpeedTree7Passes.hlsl"

인 부분들을 

#include "Packages/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7Input.hlsl"

#include "Packages/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7Passes.hlsl"로 바꿔주어야 합니다. 경로를 못찾아요. 패키지 안에 들어 있는거라서 경로를 확실히 해줘야 함. 


그 뒤 SpeedTree7CommonPasses.hlsl 에서 버텍스 아웃풋에서 

float4 lightmapUVOrVertexSH : TEXCOORD8;

로 8번 레지스터를 버텍스 SH 좌표로 받아오고요 


OUTPUT_SH(inputData.normalWS.xyz, input.lightmapUVOrVertexSH.xyz); 

로 SH 연산을 추가해준다음에 

 inputData.bakedGI = half3(0, 0, 0); // No GI currently. 이렇게 검은색이 들어있는 GI 부분을 

inputData.bakedGI = SAMPLE_GI(input.lightmapUVOrVertexSH.xy, input.lightmapUVOrVertexSH.xyz, inputData.normalWS);


로 바꿔 줘야 합니다. 



간단하긴 한데 은근히 귀찮아서, 그냥 저 파일을 받아서 바꿔주는 쪽으로 해결하시길. 
아니면 그냥 나무용 셰이더를 따로 만드는게 간단하고 빠를듯 . 
굳이 스피드트리용 셰이더를 쓰시려면 이걸 쓰시면 되고요 .







ps. 사실상 해 보니 SpeedTree7CommonPasses.hlsl

파일만 수정해도 잘 작동은 되더군요 








YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST