이미지 입력 투사
이것은 이미지 입력을 사용하여 입자 시스템에 투영하고 위치에 따라 입자를 채색하는 커널의 예입니다. 이미지는 XZ 평면에있는 것으로 가정하고 해당 평면에서 이미지의 왼쪽 상단 및 오른쪽 하단 모서리를 설정하기 위해 두 개의 노브가 제공됩니다.
|
|
kernel ParticleImageProjectKernel : ImageComputationKernel<ePixelWise> { Image<eRead,eAccessRandom,eEdgeClamped> image_texture; Image<eReadWrite> p_position; Image<eReadWrite> p_color; param: float _amount; float _dt; float2 _imageTL; float2 _imageBR; local: float2 _imageSize; void define() { defineParam(_imageTL, "pa_imageTL", float2(0.0f)); defineParam(_imageBR, "pa_imageBR", float2(1.0f)); defineParam(_dt, "_dt", 1.0f); } void init() { _imageSize = float2(image_texture.bounds.width(), image_texture.bounds.height()); } void process() { float3 p = p_position(); float2 xz = float2(p.x, p.z); float2 uv = xz = (xz-_imageTL)/(_imageBR-_imageTL); float2 st = uv*_imageSize; float4 c = bilinear(image_texture, st.x, st.y); p_color() = float4(c.x, c.y, c.z, 1.0f); } }; |
도움이되지 않은 죄송합니다
왜 도움이되지 않습니까? (해당되는 모든 것을 체크하세요)
의견을 보내 주셔서 감사합니다.
찾고있는 것을 찾을 수 없거나 워크 플로 관련 질문이있는 경우 시도해보십시오 파운드리 지원.
학습 내용을 개선 할 수있는 방법에 대한 의견이 있으시면 아래 버튼을 사용하여 설명서 팀에 이메일을 보내십시오.
의견을 보내 주셔서 감사합니다.