示例#1
0
        public Camera()
        {
            uniformBufferGL = new UniformBufferGL(CameraUniformBlock.UniformBlockGL);
#if false
            if (Configuration.useOpenRL)
            {
                uniformBufferRL = new UniformBufferRL(CameraUniformBlock.UniformBlockRL);
            }
#endif
            parameters = new CameraParameters(uniformBufferGL /*uniformBufferRL*/);
        }
示例#2
0
        //public static UniformBufferRL   UniformBufferRL;

        public static void Initialize(
            string blockName,
            int maxLightCount
            )
        {
            UniformBlockGL = new UniformBlockGL(blockName);
            UniformBlockGL.AddInt(spec.Count);
            UniformBlockGL.AddVec4(spec.Exposure);
            UniformBlockGL.AddVec4(spec.Bias);
            UniformBlockGL.AddVec4(spec.AmbientLightColor);
            UniformBlockGL.AddVec4(spec.Color, maxLightCount);
            UniformBlockGL.AddVec4(spec.Direction, maxLightCount);
            UniformBlockGL.AddMat4(spec.WorldToLight, maxLightCount);
            UniformBlockGL.AddMat4(spec.WorldToShadow, maxLightCount);
            UniformBlockGL.Seal();
            var bufferGL = UniformBufferGL = new UniformBufferGL(UniformBlockGL);

#if false
            IUniformBuffer bufferRL = null;
            if (Configuration.useOpenRL)
            {
                UniformBlockRL = new UniformBlockRL(blockName);
                UniformBlockRL.AddInt(spec.Count);
                UniformBlockRL.AddVec4(spec.Exposure);
                UniformBlockRL.AddVec4(spec.Bias);
                UniformBlockRL.AddVec4(spec.AmbientLightColor);
                UniformBlockRL.AddVec4(spec.Color, maxLightCount);
                UniformBlockRL.AddVec4(spec.Direction, maxLightCount);
                UniformBlockRL.AddMat4(spec.WorldToLight, maxLightCount);
                UniformBlockRL.AddMat4(spec.WorldToShadow, maxLightCount);
                UniformBlockRL.Seal();
                UniformBufferRL = new UniformBufferRL(UniformBlockRL);
            }
#endif

            Count             = new MultiInts(spec.Count, new Ints(1, 1), bufferGL /*bufferRL*/);
            Exposure          = new MultiFloats(spec.Exposure, new Floats(4, 1), bufferGL /*bufferRL*/);
            Bias              = new MultiFloats(spec.Bias, new Floats(4, 1), bufferGL /*bufferRL*/);
            AmbientLightColor = new MultiFloats(spec.AmbientLightColor, new Floats(4, 1), bufferGL /*bufferRL*/);
            WorldToLight      = new MultiFloats(spec.WorldToLight, new Floats(16, maxLightCount), bufferGL /*bufferRL*/);
            WorldToShadow     = new MultiFloats(spec.WorldToShadow, new Floats(16, maxLightCount), bufferGL /*bufferRL*/);
            Direction         = new MultiFloats(spec.Direction, new Floats(4, maxLightCount), bufferGL /*bufferRL*/);
            Color             = new MultiFloats(spec.Color, new Floats(4, maxLightCount), bufferGL /*bufferRL*/);
        }