private void SetCameraAndSkybox(int index) { RT_MainShader.SetMatrix("_CameraToWorld", MainCamera.cameraToWorldMatrix); RT_MainShader.SetMatrix("_CameraInverseProjection", MainCamera.projectionMatrix.inverse); RT_MainShader.SetTexture(index, "_SkyboxTexture", SkyboxTexture); RT_MainShader.SetInt("_MaxGeneration", MaxRayGeneration); if (sampleOffset.Count == SamplesPerPixel) { return; } sampleOffset.Clear(); for (int i = 0; i < SamplesPerPixel; i++) { sampleOffset.Add(Random.value); } loadBuffer(sampleOffset, ref SampleBuffer, sizeof(float)); SetGlobalBuffer("_SamplesPerPixel", SampleBuffer); int castShadow; if (enableShadow == true) { castShadow = 1; } else { castShadow = 0; } RT_MainShader.SetInt("_CastShadow", castShadow); }
private void SetGlobalBuffer(string name, ComputeBuffer buffer) { if (buffer != null) { RT_MainShader.SetBuffer(0, name, buffer); } }
private void initBuffers() { int main = RT_MainShader.FindKernel("RTmain"); SetCameraAndSkybox(main); // Material loadBuffer(materials, ref MaterialBuffer, sizeof(int) + sizeof(float) * 12); SetGlobalBuffer("_Materials", MaterialBuffer); //Lights loadBuffer(directionalLights, ref DirectionLightBuffer, sizeof(float) * 6); SetGlobalBuffer("_DirectionalLights", DirectionLightBuffer); loadBuffer(pointLights, ref PointLightBuffer, sizeof(float) * 7); SetGlobalBuffer("_PointLights", PointLightBuffer); }
private void initBVHTreeBuffers() { int main = RT_MainShader.FindKernel("RTmain"); SetCameraAndSkybox(main); // Material loadBuffer(materials, ref MaterialBuffer, sizeof(int) + sizeof(float) * 12); SetGlobalBuffer("_Materials", MaterialBuffer); //Lights loadBuffer(directionalLights, ref DirectionLightBuffer, sizeof(float) * 6); SetGlobalBuffer("_DirectionalLights", DirectionLightBuffer); loadBuffer(pointLights, ref PointLightBuffer, sizeof(float) * 7); SetGlobalBuffer("_PointLights", PointLightBuffer); loadBuffer(BVHTreeList, ref BVHTreeListBuffer, sizeof(float) * 6 + sizeof(uint) * 4); SetGlobalBuffer("_BVHTreeList", BVHTreeListBuffer); loadBuffer(triangleList, ref triangleListBuffer, sizeof(float) * 12 + sizeof(uint)); SetGlobalBuffer("_TriangleList", triangleListBuffer); }