2016-09-09 4 views
1

더 큰 텍스처에 텍스처를 연결/추가하려하지만 더 큰 텍스처의 결과를 유지하지 못했습니다.유니티 셰이더 연결 텍스처

큰 텍스처 내에서 더 작은 텍스처의 위치, 작은 텍스처 자체 및 물론 더 큰 텍스처와 같은 일부 변수를 사용하는 셰이더가 있습니다.

기본적으로 내 쉐이더는 올바르게 작동합니다 (나는 생각합니다). 결과적으로 올바른 위치에있는 더 작은 텍스처를 보았습니다. 그러나 더 큰 텍스처는 저장되지 않으므로 모든 선례 패스는 무시됩니다.

결과를 저장하여 셰이더에 다시 보내어 작은 텍스처를 모두 연결하도록하려면 어떻게해야합니까? 내가 편집기에서 또는 스크립트에서 모두를 만들려고했습니다, 그것은 RenderTexture의, Graphics.Blit(_RTConcat, _RTConcat, _concat);

RTConcat 내 큰 텍스처하지만 결과는 동일하고 _concat는 쉐이더를 사용하여 소재 :

나는이 시도 .

추신 : 전 4.5.3을 사용하고 업그레이드 할 수 없으며 프로 버전입니다.

편집/업데이트 :

내가 원하는 모습 만든 뭔가 I "성공"하지만 일을 왜 이해가 안 돼요. 내 주요 스크립트에서

나는 결과 renderTexture init을하고

_radarVision = new RenderTexture(_radarTextureWidth, _renderHeight, 24); _renderHeight, 24); _radarScreen.SetTexture("_MainTex", _radarVision);

_radarVision_radarScreen 내 스크립트를 다시 편집되지 않습니다 비행기에 적용 매트로 설정합니다.

Graphics.Blit는 하나의 스크립트를 실행하여 만든 카메라 부착 새 스크립트에 지금 :

`무효 OnRenderImage (RenderTexture 소스, RenderTexture 대상) {

Graphics.Blit(save, save, _concat); 

rttmp = RenderTexture.GetTemporary(camera.targetTexture.width, camera.targetTexture.height); 

save = rttmp; 

camera.targetTexture = save; 
RenderTexture.ReleaseTemporary(rttmp); 

}` 

은 아무것도 없다 그렇지 않으면 내 물건이 작동하게되었지만 작동해서는 안되기 때문에 여전히 당황 스럽습니다 ... 안돼요?

답변

1

그리고 내가 찾은 최고의 솔루션입니다 : 하나의 Graphics.Blit가 작동하지 않습니다하지만 이중 작업 "완벽", 그것은 단지 귀찮게 왜

Graphics.Blit(save, save1, _concat);
Graphics.Blit(save1, save, _concat);

내가 이해하지 못하는 그것 때문에 동일한 쉐이더 (실제로는 16384 * 4092와 같이 큰 텍스처로 작업)를 두 번 호출해야하지만, 마지막 솔루션 인 반면, 모든 것을 망치지 않고 마지막 쉐이더를 텍스처에 적용 할 수 있습니다.

GetTemporary을 사용하면 두 번째 셰이더를 텍스처`save, I buffer with story로 추측 할 때 문제가 발생합니다.

나는 항상 더 좋은 방법에 대한 제안을 열려있어하지만 RenderTexture가, 블리트 및 재료 콤보가 가장 좋은 해결책이 아니다 사용하여 나에게 암

0

했다 그겁니다 지금 내 솔루션은 완전히 내 문제를 해결한다. 여기에 너무 많은 오버 헤드가 있습니다.한 번에 같은 렌더링 텍스처를 읽고 렌더링 할 수 없으므로 Blit을 두 번 호출해야합니다. 직접적이고 최상의 솔루션은 다음과 같습니다.

subTex = ... ;// Initialize the sub tex 
subTex.Apply(); // Upload elementTex to the Gpu 
Graphics.CopyTexture(subTex, offset, size, globalTex, offset, size); // the subTex will be copied to globalTex in both GPU, and CPU. This is a GPU->GPU and a CPU ->CPU copy so it's very quick without any additional drawcall at all. 
관련 문제