ray-tracing | Ray TracingPhong Model Phong Shading | Graphics library
kandi X-RAY | ray-tracing Summary
kandi X-RAY | ray-tracing Summary
Ray Tracing
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of ray-tracing
ray-tracing Key Features
ray-tracing Examples and Code Snippets
Community Discussions
Trending Discussions on ray-tracing
QUESTION
I am trying to familiarize myself with AWS X-Ray. I see there are two levels of tracing: Active
and PassThrough
. The definition isn't quite helpful even after looking at this post. What does it mean if sampled=1
? I can't find any documentation on this.
ANSWER
Answered 2021-Feb-11 at 18:26"Active" sampling means the service has some form of sampling algorithm, wherein if a request comes in with no trace header, or trace header comes in with no sampling set, a sampling decision is made.
"Passthrough" means no sampling decision will be made, but if there is a trace header attached to the request, the header will be "passed through" the service to any other downstream services on the critical path.
"sampled=1" means that trace is sampled and should report data to the AWS X-Ray backend.
Blog: https://medium.com/financial-engines-techblog/enabling-aws-x-ray-on-aws-lambda-40fdbd6740b1
X-Ray Trace header: https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-tracingheader
QUESTION
To preface this, I wanted an interface, and figured that C++20 had an interface mechanic. I have never used C++20, and found concepts
about 2 hours ago. So the mistake here could be something really simple.
Suppose I have an imperative 3rd party library I would like to abstract away because imperative code is messy.
So, I define some very specific function that accepts the 3rd party library class:
...ANSWER
Answered 2021-Jan-30 at 23:07Your concept has wrong syntax, it should be:
QUESTION
I'm currently looking at some resource on how to enable X-ray for my stepfunction statemachine, from this tutorial: https://docs.aws.amazon.com/step-functions/latest/dg/concepts-xray-tracing.html#xray-concept-create
"When you enable X-Ray for an existing state machine, you must ensure that you have an IAM policy that grants sufficient permissions for X-Ray to perform traces. You can either add one manually, or generate one. For more information, see the IAM policy section for X-Ray."
There are so many permissions for X-ray, I wonder which ones I need? I'd like to add them to my step function role manually, but I don't want to add all of them including the unneeded ones.
...ANSWER
Answered 2021-Jan-25 at 21:03Following links will guide you based on your use-case:
Basic IAM permissions policy, I would suggest to start with this. Then reduce/add based on your use-cases.
How AWS X-Ray works with IAM, a bit in details.
Furthermore, you can use AWS Policy Generator to make things easy. Here, AWS X-Ray actions are listed under Type of Policy as IAM Policy
QUESTION
In threejs, I successfully import and display a glb file of a house (the house has two floors and various objects on each floor, among which chairs, some tables, a kitchen etc, such as a real house). My problem is that I am able to make the house and its objects reflect the environmental light but I am not able to make the objects of the house reflect themselves. My ultimate goal would be to implement some real time ray-tracing, but at this point I would be happy to only generate some real time reflections which in addition to the environmental light also reflect the other objects of the house. Same with shadows.
I have not found anything online about it this type of reflections. Does anyone know a good place where to start? Or if you have faced a similar challange, how did you solve it?
...ANSWER
Answered 2020-Oct-30 at 00:25You'll need to use a CubeCamera
to render the scene with the environment including the objects to be in the reflection. Then you pass that resulting texture to the .envMap
property to the object(s) that you want to show those reflections. The only problem with this is that if you have many objects that show other objects in the reflections, you'll need a huge amount of cubeCamera renders, each one from the position of that object.
See this working demo, it only captures one reflection pass as I described above, from the position of the sphere. You can kind of see the knot has a reflection of itself, which isn't realistic, but it isn't very noticeable. It's a tradeoff.
You could also copy the mirror demo if you only have a few planes that act as mirrors.
QUESTION
I define a class. I want to add some texture with my ray-tracing code with CUDA. And I use new when call the constructor.
...ANSWER
Answered 2020-Oct-14 at 10:13Although it is not well documented, texture
is a templated class for the C++ runtime API (for example here). It is defined in an internal header which is automagically included by nvcc during its pre-processing stage.
If you rename your texture type to something else, the problem will disappear. For example:
QUESTION
I have an application (based on the vulkan-tutorial.com) in which I use the titular raytracing extension for vulkan. In it, an acceleration structure is created for some geometry. This geometry then changes (vertices are displaced dynamically, per frame), and thus I update the appropriate BLAS by calling vkCmdBuildAccelerationStructureKHR
with VkAccelerationStructureBuildGeometryInfoKHR::update = VK_TRUE
. This works fine (although the update ignores my changing the maxPrimitiveCount and similar parameters - It uses as many primitives as I specified during the first build; somewhat makes sense to me and is not part of my question).
I've researched a bit and came across some best practices here: https://developer.nvidia.com/blog/best-practices-using-nvidia-rtx-ray-tracing/ In there, they mention this: "Consider using only rebuilds [of the BLAS] with unpredictable deformations." This seems like something I want to try out, however, I can't find any sample code for rebuilding BLAS, and if I simply set update to VK_FALSE, I get massive amounts of validation layer errors and no image on screen. Specifically, I get a lot of "X was destroyed/freed but was still in use" where X is command buffers, VkBuffers, memory, fences, semaphores... My guess is the rebuild is trying to free the BLAS while it's still in use.
My question is therefore: How do you properly perform a "rebuild" of a BLAS, as mentioned in the above article?
I was considering using some std::shared_ptr
to keep track of the BLAS being still in use by a given swapchain image but that seems excessively complicated and somewhat unclean, besides, I would need as many BLAS as I have swapchain images, multiplying required graphics memory by the swapchain size... that can't be practical in real life applications, right?
ANSWER
Answered 2020-Oct-06 at 15:47I cannot explain why, but I must've had an error in my code which resulted in the errors I described in my question.
The correct way to rebuild instead of update an acceleration structure is indeed by setting the update parameter of VkAccelerationStructureBuildGeometryInfoKHR
to VK_FALSE, that's all that needs to be done.
QUESTION
I don't know why, but ray-triangle intersection algorithm (Möller-Trumbore and Watertight) works with 2 directions.
from origin to end - how it must work
from end to origin - the problem
white cross - an unnecessary intersection
I tried to use 3 component vectors, so I have removed all W values from code.
Ray
...ANSWER
Answered 2020-Jul-24 at 10:50The last value calculated T
is the unit distance on the ray from the ray origin. Where T == 0.0f
is at the origin, T == 1.0f
is at the ray end, T > 1.0f
are past the ray end and T < 0.0f
are before the ray origin.
Thus you need to check T
to make sure that the intercept is on the correct part of the ray. Examples
Ahead of the not including the origin.
return T > EPSILON;
Ahead of the ray including the origin.
return T > -EPSILON;
On the ray including origin and end.
return T > -EPSILON && T < 1.0f + EPSILON;
On the ray excluding origin and end.
return T > EPSILON && T < 1.0f - EPSILON;
and so on...
EPSILONWe use EPSILON
to deal with floating point errors, for this algorithm you may want to use a larger value than EPSILON
especially if the angle between the ray and the polygon normal is close to 90deg
QUESTION
My original code was -
...ANSWER
Answered 2020-Jun-13 at 08:21Not sure it's an answer to the question - but it might help.
This piece of code works fine, and it's basically a template for what you're looking for. Could you please try to run it, and see if it causes any issues?
QUESTION
I would like to get the intersection point of a line (defined by a vector and origin) on a triangle. My engine use right handed coordinate system, so X pointing forward, Y pointing left and Z pointing up.
---- Edit ----
With Antares's help, I convert my points to engine space with:
...ANSWER
Answered 2020-Apr-27 at 00:02My engine use right handed coordinate system, so X pointing forward, Y pointing left and Z pointing up.
You have a slightly incorrect idea of a right handed coordinate system... please check https://en.wikipedia.org/wiki/Cartesian_coordinate_system#In_three_dimensions.
As the name suggests, X is pointing right (right hand's thumb to the right), Y is pointing up (straight index finger) and Z (straight middle finger) is pointing "forward" (actually -Z is forward, and Z is backward in the camera coordinate system).
Actually... your coordinate components are right hand sided, but the interpretation as X is forward etc. is unusual.
If you suspect the problem could be with the coordinate system of your engine (OGRE maybe? plain OpenGL? Or something selfmade?), then you need to transform your point and direction coordinates into the coordinate system of your algorithm. The algorithm you presented works in camera coordinate system, if I am not mistaken. Of course you need to transform the resulting intersection point back to the interpretation you use in the engine. To turn the direction of a vector component around (e.g. the Z coordinate) you can use multiplication with -1 to achieve the effect.
Edit: One more thing: I realized that the algorithm uses directional vectors as well, not just points. The rearranging of components does only work for points, not directions, if I recall correctly. Maybe you have to do a matrix multiplication with the CameraView transformation matrix (or its inverse M^-1 or was it the transpose M^T, I am not sure). I can't help you there, I hope you can figure it out or just do trial&error.
My problem is I get t: -52.603783
intersection point P : [-1143.477295, -1053.412842, 49.525799] This give me, relative to a 640X480 texture, the uv point: [-658, 41]
I reckon you think your values are incorrect. Which values do you expect to get for t and UV coordinates? Which ones would be "correct" for your input?
Hope this gets you started. GL, HF with your project! :)
QUESTION
In my raytracer all surfaces are centered at the origin and oriented on Y axis. Displacement, rotations and resizing are obtained through transformation matrix applied on rays.
I recently rendered a torus in my ray-tracing using its Cartesian equation:
(x^2 + y^2 + z^2)^2 - 2 * (r1^2 + r2^2) * (x^2 + y^2 + z^2) + 4 * r1^2 * y^2 + (r1^2 - r2^2)^2
to which I replaced every point with the ray equation:
ex: X = Ray.ori.x + T * Ray.dir.x;
With the ray components replaced in the equation, I got the 5 coefficients of my quartic function which can be used to find the equation roots (the T intersections) with a 4th degree polynomial solver algorithm.
I was wondering if a mobius strip can be rendered the same way. My research did not bring up much, I found some Raytracing codes using cubic equations but copying the 4 coefficients led me to incomprehensible forms and artifacts.
Could you help me to render it? Also advice to render it with another method is welcome.
Thanks!
...ANSWER
Answered 2020-Jan-19 at 19:37I took the (Cartesian) cubic equation of the mobius from: mathworld then I replaced the x,y and z of mobius with the ray equation.
However the result is this one:
Here is the code to calculate the mobius coefficients.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install ray-tracing
To run GUI, you need to install GLFW3 and SDL2 first:.
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page