Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<float>();//cudaCreateChannelDesc(32, 0, 0, 0, cudaChannelFormatKindFloat);
- cudaArray *d_cuArr;
- cudaMalloc3DArray(&d_cuArr, &channelDesc, make_cudaExtent(SizeNoise,SizeNoise,SizeNoise), 0);
- cudaMemcpy3DParms copyParams = {0};
- //Loop for every separated Noise Texture (nNoise = 4)
- for(int i = 0; i < nNoise; i++){
- //initialize the textures
- NoiseTextures[i] = texture<float, 3, cudaReadModeElementType>(1,cudaFilterModeLinear,cudaAddressModeWrap,channelDesc);
- //Array creation
- //+(sqrSizeNoise*i) is to separate the created Noise Array into smaller parts with the size of SizeNoise^3
- copyParams.srcPtr = make_cudaPitchedPtr(d_Noise+(sqrSizeNoise*i), SizeNoise*sizeof(float), SizeNoise, SizeNoise);
- copyParams.dstArray = d_cuArr;
- copyParams.extent = make_cudaExtent(SizeNoise,SizeNoise,SizeNoise);
- copyParams.kind = cudaMemcpyDeviceToDevice;
- checkCudaErrors(cudaMemcpy3D(©Params));
- //Array creation End
- //new Bind
- // set texture parameters
- NoiseTextures[i].normalized = true; // access with normalized texture coordinates
- NoiseTextures[i].filterMode = cudaFilterModeLinear; // linear interpolation
- NoiseTextures[i].addressMode[0] = cudaAddressModeWrap; // wrap texture coordinates
- NoiseTextures[i].addressMode[1] = cudaAddressModeWrap;
- NoiseTextures[i].addressMode[2] = cudaAddressModeWrap;
- // bind array to 3D texture
- checkCudaErrors(cudaBindTextureToArray(NoiseTextures[i], d_cuArr, channelDesc));
- //end Bind
- }
- cudaFreeArray(d_cuArr);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement