KiCad PCB EDA Suite
|
#include <render_3d_raytrace.h>
Public Member Functions | |
RENDER_3D_RAYTRACE (EDA_3D_CANVAS *aCanvas, BOARD_ADAPTER &aAdapter, CAMERA &aCamera) | |
~RENDER_3D_RAYTRACE () | |
void | SetCurWindowSize (const wxSize &aSize) override |
Before each render, the canvas will tell the render what is the size of its windows, so render can take actions if it changed. More... | |
bool | Redraw (bool aIsMoving, REPORTER *aStatusReporter, REPORTER *aWarningReporter) override |
Redraw the view. More... | |
int | GetWaitForEditingTimeOut () override |
Give the interface the time (in ms) that it should wait for editing or movements before (this works for display preview mode). More... | |
void | Reload (REPORTER *aStatusReporter, REPORTER *aWarningReporter, bool aOnlyLoadCopperAndShapes) |
BOARD_ITEM * | IntersectBoardItem (const RAY &aRay) |
void | ReloadRequest () |
bool | IsReloadRequestPending () const |
Query if there is a pending reload request. More... | |
void | SetBusyIndicatorFactory (BUSY_INDICATOR::FACTORY aNewFactory) |
Set a new busy indicator factory. More... | |
Static Public Attributes | |
static constexpr float | MIN_DISTANCE_IU = 4 * PCB_IU_PER_MM |
Protected Member Functions | |
std::unique_ptr< BUSY_INDICATOR > | CreateBusyIndicator () const |
Return a created busy indicator, if a factory has been set, else a null pointer. More... | |
Protected Attributes | |
EDA_3D_CANVAS * | m_canvas |
Settings reference in use for this render. More... | |
BOARD_ADAPTER & | m_boardAdapter |
CAMERA & | m_camera |
Flag if the opengl specific for this render was already initialized. More... | |
bool | m_is_opengl_initialized |
bool | m_reloadRequested |
The window size that this camera is working. More... | |
wxSize | m_windowSize |
Static Protected Attributes | |
static const wxChar * | m_logTrace = wxT( "KI_TRACE_3D_RENDER" ) |
Trace mask used to enable or disable the trace output of this class. More... | |
Private Member Functions | |
bool | initializeOpenGL () |
void | initializeNewWindowSize () |
void | initPbo () |
void | deletePbo () |
void | createItemsFromContainer (const BVH_CONTAINER_2D *aContainer2d, PCB_LAYER_ID aLayer_id, const MATERIAL *aMaterialLayer, const SFVEC3F &aLayerColor, float aLayerZOffset) |
void | restartRenderState () |
void | renderTracing (GLubyte *ptrPBO, REPORTER *aStatusReporter) |
void | postProcessShading (GLubyte *ptrPBO, REPORTER *aStatusReporter) |
void | postProcessBlurFinish (GLubyte *ptrPBO, REPORTER *aStatusReporter) |
void | renderBlockTracing (GLubyte *ptrPBO, signed int iBlock) |
void | renderFinalColor (GLubyte *ptrPBO, const SFVEC3F &rgbColor, bool applyColorSpaceConversion) |
void | renderRayPackets (const SFVEC3F *bgColorY, const RAY *aRayPkt, HITINFO_PACKET *aHitPacket, bool is_testShadow, SFVEC3F *aOutHitColor) |
void | renderAntiAliasPackets (const SFVEC3F *aBgColorY, const HITINFO_PACKET *aHitPck_X0Y0, const HITINFO_PACKET *aHitPck_AA_X1Y1, const RAY *aRayPck, SFVEC3F *aOutHitColor) |
void | setupMaterials () |
SFVEC3F | shadeHit (const SFVEC3F &aBgColor, const RAY &aRay, HITINFO &aHitInfo, bool aIsInsideObject, unsigned int aRecursiveLevel, bool is_testShadow) const |
void | createObject (CONTAINER_3D &aDstContainer, const OBJECT_2D *aObject2D, float aZMin, float aZMax, const MATERIAL *aMaterial, const SFVEC3F &aObjColor) |
Create one or more 3D objects form a 2D object and Z positions. More... | |
void | addPadsAndVias () |
void | insertHole (const PCB_VIA *aVia) |
void | insertHole (const PAD *aPad) |
void | load3DModels (CONTAINER_3D &aDstContainer, bool aSkipMaterialInformation) |
void | addModels (CONTAINER_3D &aDstContainer, const S3DMODEL *a3DModel, const glm::mat4 &aModelMatrix, float aFPOpacity, bool aSkipMaterialInformation, BOARD_ITEM *aBoardItem) |
MODEL_MATERIALS * | getModelMaterial (const S3DMODEL *a3DModel) |
void | initializeBlockPositions () |
void | render (GLubyte *ptrPBO, REPORTER *aStatusReporter) |
void | renderPreview (GLubyte *ptrPBO) |
Definition at line 55 of file render_3d_raytrace.h.
|
explicit |
Definition at line 42 of file render_3d_raytrace.cpp.
References m_accelerator, m_antioutlineBoard2dObjects, m_blockRenderProgressCount, m_cameraLight, m_converted2dRoundSegmentCount, m_convertedDummyBlockCount, m_firstHitinfo, m_isPreview, RENDER_3D_BASE::m_logTrace, m_oldWindowsSize, m_openglSupportsVertexBufferObjects, m_outlineBoard2dObjects, m_pboDataSize, m_pboId, m_renderStartTime, m_renderState, m_shaderBuffer, m_xoffset, m_yoffset, and RT_RENDER_STATE_MAX.
RENDER_3D_RAYTRACE::~RENDER_3D_RAYTRACE | ( | ) |
Definition at line 72 of file render_3d_raytrace.cpp.
References deletePbo(), m_accelerator, m_antioutlineBoard2dObjects, RENDER_3D_BASE::m_logTrace, m_outlineBoard2dObjects, and m_shaderBuffer.
|
private |
Definition at line 1421 of file raytracing/create_scene.cpp.
References CONTAINER_3D_BASE::Add(), ConvertSRGBToLinear(), getModelMaterial(), MATERIAL::GetTransparency(), RENDER_3D_BASE::m_boardAdapter, BOARD_ADAPTER::m_Cfg, SMESH::m_Color, SMATERIAL::m_Diffuse, SMESH::m_FaceIdx, SMESH::m_FaceIdxSize, SMESH::m_MaterialIdx, S3DMODEL::m_Materials, S3DMODEL::m_MaterialsSize, S3DMODEL::m_Meshes, S3DMODEL::m_MeshesSize, SMESH::m_Normals, SMESH::m_Positions, EDA_3D_VIEWER_SETTINGS::m_Render, SMESH::m_VertexSize, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::material_mode, MaterialDiffuseToColorCAD(), OBJECT_3D::SetBoardItem(), TRIANGLE::SetColor(), OBJECT_3D::SetMaterial(), OBJECT_3D::SetModelTransparency(), v1, and v2.
Referenced by load3DModels().
|
private |
Definition at line 1167 of file raytracing/create_scene.cpp.
References BOARD::Footprints(), BOARD_ADAPTER::GetBoard(), insertHole(), RENDER_3D_BASE::m_boardAdapter, pad, PCB_VIA_T, BOARD::Tracks(), and via.
Referenced by Reload().
|
protectedinherited |
Return a created busy indicator, if a factory has been set, else a null pointer.
the canvas to display the scene
Definition at line 70 of file render_3d_base.cpp.
References RENDER_3D_BASE::m_busyIndicatorFactory.
Referenced by RENDER_3D_OPENGL::Redraw(), and Redraw().
|
private |
Definition at line 230 of file raytracing/create_scene.cpp.
References CONTAINER_2D_BASE::Add(), CONTAINER_3D_BASE::Add(), B_Mask, B_Paste, B_SilkS, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::clip_silk_on_via_annuli, ConvertSRGBToLinear(), CSGITEM_EMPTY, CSGITEM_FULL, F_Mask, F_Paste, F_SilkS, OBJECT_2D::GetBoardItem(), BVH_CONTAINER_2D::GetIntersectingObjects(), BOARD_ADAPTER::GetLayerBottomZPos(), BOARD_ADAPTER::GetLayerHoleMap(), BOARD_ADAPTER::GetLayerMap(), BOARD_ADAPTER::GetLayerTopZPos(), CONTAINER_2D_BASE::GetList(), BOARD_ADAPTER::GetTH_ODs(), BOARD_ADAPTER::GetViaAnnuli(), m_antioutlineBoard2dObjects, RENDER_3D_BASE::m_boardAdapter, BOARD_ADAPTER::m_Cfg, m_containerWithObjectsToDelete, m_objectContainer, EDA_3D_VIEWER_SETTINGS::m_Render, LAYER_ITEM::SetColor(), OBJECT_3D::SetMaterial(), and EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::subtract_mask_from_silk.
Referenced by Reload().
|
private |
Create one or more 3D objects form a 2D object and Z positions.
It tries to optimize some types of objects that will be faster to trace than the LAYER_ITEM object.
Definition at line 179 of file raytracing/create_scene.cpp.
References CONTAINER_3D_BASE::Add(), ConvertSRGBToLinear(), OBJECT_2D::GetBBox(), OBJECT_2D::GetObjectType(), m_converted2dRoundSegmentCount, m_convertedDummyBlockCount, BBOX_2D::Max(), BBOX_2D::Min(), LAYER_ITEM::SetColor(), XY_PLANE::SetColor(), ROUND_SEGMENT::SetColor(), and OBJECT_3D::SetMaterial().
Referenced by Reload().
|
private |
Definition at line 98 of file render_3d_raytrace.cpp.
References m_openglSupportsVertexBufferObjects, and m_pboId.
Referenced by initPbo(), and ~RENDER_3D_RAYTRACE().
|
private |
Definition at line 1318 of file raytracing/create_scene.cpp.
References ConvertSRGBToLinear(), SMATERIAL::m_Ambient, RENDER_3D_BASE::m_boardAdapter, m_brushedMetalMaterial, BOARD_ADAPTER::m_Cfg, SMATERIAL::m_Diffuse, SMATERIAL::m_Emissive, S3DMODEL::m_Materials, S3DMODEL::m_MaterialsSize, m_modelMaterialMap, m_plasticMaterial, EDA_3D_VIEWER_SETTINGS::m_Render, SMATERIAL::m_Shininess, m_shinyPlasticMaterial, SMATERIAL::m_Specular, SMATERIAL::m_Transparency, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::material_mode, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_procedural_textures, RGBtoGray(), and MATERIAL::SetGenerator().
Referenced by addModels().
|
overridevirtual |
Give the interface the time (in ms) that it should wait for editing or movements before (this works for display preview mode).
Implements RENDER_3D_BASE.
Definition at line 92 of file render_3d_raytrace.cpp.
|
private |
Definition at line 1853 of file render_3d_raytrace.cpp.
References DecodeMorton2X(), DecodeMorton2Y(), initPbo(), m_blockPositions, m_blockPositionsFast, m_fastPreviewModeSize, m_postShaderSsao, m_realBufferSize, m_shaderBuffer, RENDER_3D_BASE::m_windowSize, m_xoffset, m_yoffset, RAYPACKET_DIM, RAYPACKET_INVMASK, and POST_SHADER::UpdateSize().
Referenced by Redraw().
|
private |
Definition at line 1802 of file render_3d_raytrace.cpp.
References initPbo().
Referenced by SetCurWindowSize().
|
private |
Definition at line 1837 of file render_3d_raytrace.cpp.
References RENDER_3D_BASE::m_is_opengl_initialized.
Referenced by Redraw().
|
private |
Definition at line 1808 of file render_3d_raytrace.cpp.
References deletePbo(), RENDER_3D_BASE::m_logTrace, m_openglSupportsVertexBufferObjects, m_pboDataSize, m_pboId, and m_realBufferSize.
Referenced by initializeBlockPositions(), and initializeNewWindowSize().
|
private |
Definition at line 996 of file raytracing/create_scene.cpp.
References CONTAINER_2D_BASE::Add(), CONTAINER_3D_BASE::Add(), B_Cu, BOARD_ADAPTER::BiuTo3dUnits(), ConvertSRGBToLinear(), CSGITEM_EMPTY, CSGITEM_FULL, F_Cu, BOARD_ADAPTER::GetBackCopperThickness(), OBJECT_2D::GetBBox(), PAD::GetDrillSize(), BOARD_ADAPTER::GetFrontCopperThickness(), BOARD_ADAPTER::GetHolePlatingThickness(), BVH_CONTAINER_2D::GetIntersectingObjects(), BOARD_ADAPTER::GetLayerBottomZPos(), CONTAINER_2D_BASE::GetList(), PAD::GetOrientation(), PAD::GetPosition(), BOARD_ADAPTER::GetTH_IDs(), OBJECT_2D::Intersects(), m_antioutlineBoard2dObjects, RENDER_3D_BASE::m_boardAdapter, m_containerWithObjectsToDelete, BOARD_ADAPTER::m_CopperColor, m_materials, m_objectContainer, RotatePoint(), LAYER_ITEM::SetColor(), OBJECT_3D::SetMaterial(), VECTOR2< T >::x, and VECTOR2< T >::y.
|
private |
Definition at line 965 of file raytracing/create_scene.cpp.
References CONTAINER_2D_BASE::Add(), CONTAINER_3D_BASE::Add(), BOARD_ADAPTER::BiuTo3dUnits(), ConvertSRGBToLinear(), BOARD_ADAPTER::GetBackCopperThickness(), PCB_VIA::GetDrillValue(), BOARD_ADAPTER::GetFrontCopperThickness(), BOARD_ADAPTER::GetHolePlatingThickness(), BOARD_ADAPTER::GetLayerBottomZPos(), PCB_TRACK::GetStart(), PCB_VIA::LayerPair(), RENDER_3D_BASE::m_boardAdapter, m_containerWithObjectsToDelete, BOARD_ADAPTER::m_CopperColor, m_materials, m_objectContainer, LAYER_ITEM::SetColor(), OBJECT_3D::SetMaterial(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by addPadsAndVias().
BOARD_ITEM * RENDER_3D_RAYTRACE::IntersectBoardItem | ( | const RAY & | aRay | ) |
Definition at line 1926 of file render_3d_raytrace.cpp.
References OBJECT_3D::GetBoardItem(), ACCELERATOR_3D::Intersect(), m_accelerator, HITINFO::m_tHit, and HITINFO::pHitObject.
Referenced by EDA_3D_CANVAS::OnLeftDown(), and EDA_3D_CANVAS::OnMouseMove().
|
inlineinherited |
Query if there is a pending reload request.
Definition at line 77 of file render_3d_base.h.
References RENDER_3D_BASE::m_reloadRequested.
Referenced by EDA_3D_CANVAS::DoRePaint(), and EDA_3D_CANVAS::IsReloadRequestPending().
|
private |
Definition at line 1196 of file raytracing/create_scene.cpp.
References addModels(), BOARD_ADAPTER::BiuTo3dUnits(), FP_LIB_TABLE::FindRow(), BOARD::Footprints(), BOARD_ADAPTER::Get3dCacheManager(), BOARD_ADAPTER::GetBoard(), BOARD_ADAPTER::GetFootprintZPos(), LIB_TABLE_ROW::GetFullURI(), S3D_CACHE::GetModel(), BOARD::GetProject(), BOARD_ADAPTER::IsFootprintShown(), RENDER_3D_BASE::m_boardAdapter, BOARD_ADAPTER::m_Cfg, BOARD_ADAPTER::m_IsPreviewer, EDA_3D_VIEWER_SETTINGS::m_Render, PROJECT_PCB::PcbFootprintLibs(), EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::show_footprints_insert, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::show_footprints_normal, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::show_footprints_virtual, UNITS3D_TO_UNITSPCB, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by Reload().
|
private |
Definition at line 888 of file render_3d_raytrace.cpp.
References RENDER_3D_BASE::m_boardAdapter, BOARD_ADAPTER::m_Cfg, m_realBufferSize, EDA_3D_VIEWER_SETTINGS::m_Render, and EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_post_processing.
Referenced by render().
|
private |
Definition at line 836 of file render_3d_raytrace.cpp.
References _, RENDER_3D_BASE::m_boardAdapter, BOARD_ADAPTER::m_Cfg, m_postShaderSsao, m_realBufferSize, EDA_3D_VIEWER_SETTINGS::m_Render, m_renderState, m_shaderBuffer, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_post_processing, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_shadows, REPORTER::Report(), RT_RENDER_STATE_POST_PROCESS_BLUR_AND_FINISH, POST_SHADER_SSAO::SetShadedBuffer(), and POST_SHADER_SSAO::SetShadowsEnabled().
Referenced by render().
|
overridevirtual |
Redraw the view.
aIsMoving | if the user is moving the scene, it should be render in preview mode. |
aStatusReporter | a pointer to the status progress reporter. |
Implements RENDER_3D_BASE.
Definition at line 148 of file render_3d_raytrace.cpp.
References _, RENDER_3D_BASE::CreateBusyIndicator(), CAMERA::GetDir(), initializeBlockPositions(), initializeOpenGL(), BOARD_ADAPTER::m_BgColorBot, BOARD_ADAPTER::m_BgColorTop, RENDER_3D_BASE::m_boardAdapter, RENDER_3D_BASE::m_camera, m_cameraLight, RENDER_3D_BASE::m_is_opengl_initialized, m_oldWindowsSize, m_pboId, m_realBufferSize, RENDER_3D_BASE::m_reloadRequested, m_renderState, RENDER_3D_BASE::m_windowSize, m_xoffset, m_yoffset, OglDrawBackground(), CAMERA::ParametersChanged(), Reload(), render(), renderPreview(), REPORTER::Report(), RT_RENDER_STATE_FINISH, RT_RENDER_STATE_MAX, and DIRECTIONAL_LIGHT::SetDirection().
void RENDER_3D_RAYTRACE::Reload | ( | REPORTER * | aStatusReporter, |
REPORTER * | aWarningReporter, | ||
bool | aOnlyLoadCopperAndShapes | ||
) |
Definition at line 361 of file raytracing/create_scene.cpp.
References _, CONTAINER_2D_BASE::Add(), CONTAINER_3D_BASE::Add(), addPadsAndVias(), B_Adhes, B_CrtYd, B_Cu, B_Fab, B_Mask, B_Paste, B_SilkS, BOARD_ADAPTER::BiuTo3dUnits(), SHAPE_POLY_SET::BooleanSubtract(), buildBoardBoundingBoxPoly(), BVH_CONTAINER_2D::BuildBVH(), CONTAINER_2D_BASE::Clear(), CONTAINER_3D_BASE::Clear(), Cmts_User, ConvertPolygonToBlocks(), ConvertSRGBToLinear(), createItemsFromContainer(), createObject(), CSGITEM_EMPTY, CSGITEM_FULL, CAMERA::DEFAULT_MAX_ZOOM, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::differentiate_plated_copper, Dwgs_User, Eco1_User, Eco2_User, F_Adhes, F_CrtYd, F_Cu, F_Fab, F_Mask, F_Paste, F_SilkS, SHAPE_POLY_SET::Fracture(), BOARD_ADAPTER::GetAverageHoleDiameter(), BOARD_ADAPTER::GetAverageViaHoleDiameter(), BOARD_ADAPTER::GetBackCopperThickness(), CONTAINER_3D_BASE::GetBBox(), BOARD_ADAPTER::GetBBox(), BOARD_ADAPTER::GetBoard(), BOARD_ADAPTER::GetBoardCenter(), BOARD_ADAPTER::GetBoardPoly(), CAMERA::GetCameraInitPos(), BBOX_3D::GetCenter(), BOARD_ADAPTER::GetColor(), BOARD_ADAPTER::GetFrontCopperThickness(), BOARD_ADAPTER::GetHoleCount(), BVH_CONTAINER_2D::GetIntersectingObjects(), BOARD_ADAPTER::GetLayerBottomZPos(), BOARD_ADAPTER::GetLayerMap(), BOARD_ADAPTER::GetLayerTopZPos(), CONTAINER_2D_BASE::GetList(), CONTAINER_3D_BASE::GetList(), BBOX_3D::GetMaxDimension(), BOARD_ADAPTER::GetPlatedPadsBack(), BOARD_ADAPTER::GetPlatedPadsFront(), GetRunningMicroSecs(), BOARD_ADAPTER::GetSphericalCoord(), BOARD_ADAPTER::GetTH_ODs(), BOARD_ADAPTER::GetViaCount(), BOARD_ADAPTER::GetVisibleLayers(), BOARD_ADAPTER::InitSettings(), OBJECT_2D_STATS::Instance(), OBJECT_3D_STATS::Instance(), IsCopperLayer(), BBOX_3D::IsInitialized(), LAYER_3D_BOARD, LAYER_3D_SOLDERMASK_BOTTOM, LAYER_3D_SOLDERMASK_TOP, load3DModels(), m_accelerator, m_antioutlineBoard2dObjects, BOARD_ADAPTER::m_BgColorTop, RENDER_3D_BASE::m_boardAdapter, BOARD_ADAPTER::m_BoardBodyColor, RENDER_3D_BASE::m_camera, m_cameraLight, BOARD_ADAPTER::m_Cfg, m_containerWithObjectsToDelete, BOARD_ADAPTER::m_CopperColor, BOARD_ADAPTER::m_ECO1Color, BOARD_ADAPTER::m_ECO2Color, m_lights, m_materials, m_modelMaterialMap, m_objectContainer, m_outlineBoard2dObjects, RENDER_3D_BASE::m_reloadRequested, EDA_3D_VIEWER_SETTINGS::m_Render, BOARD_ADAPTER::m_SilkScreenColorBot, BOARD_ADAPTER::m_SilkScreenColorTop, BOARD_ADAPTER::m_SolderMaskColorBot, BOARD_ADAPTER::m_SolderMaskColorTop, BOARD_ADAPTER::m_SolderPasteColor, BOARD_ADAPTER::m_UserCommentsColor, BOARD_ADAPTER::m_UserDrawingsColor, BBOX_3D::Max(), BBOX_3D::Min(), MIN_DISTANCE_IU, NextFloatDown(), NextFloatUp(), SHAPE_POLY_SET::OutlineCount(), SHAPE_POLY_SET::PM_FAST, RANGE_SCALE_3D, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_backfloor, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_lightColor, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_lightColorBottom, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_lightColorCamera, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_lightColorTop, REPORTER::Report(), OBJECT_2D_STATS::ResetStats(), OBJECT_3D_STATS::ResetStats(), BBOX_3D::Scale(), CAMERA::SetBoardLookAtPos(), LIGHT::SetCastShadows(), TRIANGLE::SetColor(), CYLINDER::SetColor(), LAYER_ITEM::SetColor(), OBJECT_3D::SetMaterial(), CAMERA::SetMaxZoom(), CAMERA::SetMinZoom(), setupMaterials(), SphericalToCartesian(), v1, v2, v3, v4, v5, VECTOR2< T >::x, VECTOR3< T >::x, VECTOR2< T >::y, VECTOR3< T >::y, and VECTOR3< T >::z.
Referenced by EDA_3D_CANVAS::DoRePaint(), and Redraw().
|
inlineinherited |
Definition at line 70 of file render_3d_base.h.
References RENDER_3D_BASE::m_reloadRequested.
Referenced by EDA_3D_CANVAS::ReloadRequest(), EDA_3D_CANVAS::RenderEngineChanged(), and EDA_3D_CANVAS::RenderRaytracingRequest().
|
private |
Definition at line 286 of file render_3d_raytrace.cpp.
References _, ConvertSRGBToLinear(), EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::engine, CAMERA::GetDir(), GetRunningMicroSecs(), m_backgroundColorBottom, m_backgroundColorTop, BOARD_ADAPTER::m_BgColorBot, BOARD_ADAPTER::m_BgColorTop, RENDER_3D_BASE::m_boardAdapter, RENDER_3D_BASE::m_camera, m_cameraLight, BOARD_ADAPTER::m_Cfg, m_realBufferSize, EDA_3D_VIEWER_SETTINGS::m_Render, m_renderStartTime, m_renderState, postProcessBlurFinish(), postProcessShading(), renderTracing(), REPORTER::Report(), restartRenderState(), RT_RENDER_STATE_FINISH, RT_RENDER_STATE_MAX, RT_RENDER_STATE_POST_PROCESS_BLUR_AND_FINISH, RT_RENDER_STATE_POST_PROCESS_SHADE, RT_RENDER_STATE_TRACING, and DIRECTIONAL_LIGHT::SetDirection().
Referenced by Redraw().
|
private |
Definition at line 501 of file render_3d_raytrace.cpp.
References ACCELERATOR_3D::Intersect(), HITINFO::m_acc_node_info, m_accelerator, RENDER_3D_BASE::m_boardAdapter, BOARD_ADAPTER::m_Cfg, HITINFO_PACKET::m_HitInfo, EDA_3D_VIEWER_SETTINGS::m_Render, HITINFO::m_tHit, RAYPACKET_DIM, RAYPACKET_RAYS_PER_PACKET, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_shadows, and shadeHit().
Referenced by renderBlockTracing().
|
private |
Definition at line 625 of file render_3d_raytrace.cpp.
References RAY::at(), DISP_FACTOR, HITINFO_PACKET_init(), ACCELERATOR_3D::Intersect(), m_accelerator, m_backgroundColorBottom, m_backgroundColorTop, m_blockPositions, RENDER_3D_BASE::m_boardAdapter, RENDER_3D_BASE::m_camera, BOARD_ADAPTER::m_Cfg, HITINFO_PACKET::m_HitInfo, HITINFO::m_HitNormal, m_postShaderSsao, RAYPACKET::m_ray, m_realBufferSize, EDA_3D_VIEWER_SETTINGS::m_Render, HITINFO::m_ShadowFactor, HITINFO::m_tHit, RENDER_3D_BASE::m_windowSize, m_xoffset, m_yoffset, RAYPACKET_DIM, RAYPACKET_InitRays_with2DDisplacement(), RAYPACKET_RAYS_PER_PACKET, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_anti_aliasing, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_post_processing, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_shadows, renderAntiAliasPackets(), renderFinalColor(), renderRayPackets(), and POST_SHADER::SetPixelData().
|
private |
Definition at line 444 of file render_3d_raytrace.cpp.
References color, and convertLinearToSRGB().
Referenced by renderBlockTracing().
|
private |
Definition at line 945 of file render_3d_raytrace.cpp.
References BlendColor(), RAY::Init(), ACCELERATOR_3D::Intersect(), OBJECT_3D::Intersect(), m_accelerator, m_blockPositions, m_blockPositionsFast, HITINFO::m_HitNormal, m_isPreview, m_realBufferSize, HITINFO::m_tHit, HITINFO::pHitObject, RAYPACKET_DIM, RAYPACKET_RAYS_PER_PACKET, SetPixel(), and shadeHit().
Referenced by Redraw().
|
private |
Definition at line 479 of file render_3d_raytrace.cpp.
References RAYPACKET_DIM, and shadeHit().
Referenced by renderBlockTracing().
|
private |
Definition at line 344 of file render_3d_raytrace.cpp.
References m_blockPositions, and m_isPreview.
Referenced by render().
|
private |
Definition at line 123 of file render_3d_raytrace.cpp.
References GetRunningMicroSecs(), POST_SHADER::InitFrame(), m_blockPositions, m_blockPositionsWasProcessed, m_blockRenderProgressCount, m_postShaderSsao, m_renderStartTime, m_renderState, and RT_RENDER_STATE_TRACING.
Referenced by render().
|
inherited |
Set a new busy indicator factory.
When set, this factory will be used to generate busy indicators when suitable. If not set, no busy indicator will be used.
Definition at line 64 of file render_3d_base.cpp.
References RENDER_3D_BASE::m_busyIndicatorFactory.
|
overridevirtual |
Before each render, the canvas will tell the render what is the size of its windows, so render can take actions if it changed.
aSize | the current size of the render window |
Implements RENDER_3D_BASE.
Definition at line 111 of file render_3d_raytrace.cpp.
References initializeNewWindowSize(), and RENDER_3D_BASE::m_windowSize.
|
private |
Definition at line 75 of file raytracing/create_scene.cpp.
References BOARD_ADAPTER::BiuTo3dUnits(), ConvertSRGBToLinear(), EDA_IU_SCALE::IU_PER_MM, BOARD_ADAPTER::m_BgColorTop, RENDER_3D_BASE::m_boardAdapter, BOARD_ADAPTER::m_BoardBodyColor, m_boardMaterial, m_brushedMetalMaterial, BOARD_ADAPTER::m_Cfg, BOARD_ADAPTER::m_CopperColor, m_copperMaterial, m_materials, m_plasticMaterial, m_platedCopperMaterial, EDA_3D_VIEWER_SETTINGS::m_Render, m_shinyPlasticMaterial, BOARD_ADAPTER::m_SilkScreenColorTop, m_silkScreenMaterial, BOARD_ADAPTER::m_SolderMaskColorTop, m_solderMaskMaterial, BOARD_ADAPTER::m_SolderPasteColor, pcbIUScale, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_nrsamples_reflections, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_nrsamples_refractions, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_procedural_textures, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_recursivelevel_reflections, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_recursivelevel_refractions, MATERIAL::SetDefaultReflectionRayCount(), MATERIAL::SetDefaultReflectionRecursionCount(), MATERIAL::SetDefaultRefractionRayCount(), MATERIAL::SetDefaultRefractionRecursionCount(), and TransparencyControl().
Referenced by Reload().
|
private |
Definition at line 1541 of file render_3d_raytrace.cpp.
References RAY::at(), MATERIAL::GetAbsorvance(), MATERIAL::GetAmbientColor(), OBJECT_3D::GetDiffuseColor(), MATERIAL::GetEmissiveColor(), OBJECT_3D::GetMaterial(), OBJECT_3D::GetModelTransparency(), BOARD_ADAPTER::GetNonCopperLayerThickness(), MATERIAL::GetReflection(), MATERIAL::GetReflectionRayCount(), MATERIAL::GetRefractionRayCount(), MATERIAL::GetRefractionRecursionCount(), MATERIAL::GetSpecularColor(), RAY::Init(), ACCELERATOR_3D::Intersect(), ACCELERATOR_3D::IntersectP(), m_accelerator, RENDER_3D_BASE::m_boardAdapter, BOARD_ADAPTER::m_Cfg, RAY::m_Dir, HITINFO::m_HitNormal, HITINFO::m_HitPoint, m_isPreview, m_lights, EDA_3D_VIEWER_SETTINGS::m_Render, HITINFO::m_ShadowFactor, HITINFO::m_tHit, HITINFO::pHitObject, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_anti_aliasing, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_nrsamples_shadows, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_reflections, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_refractions, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_spread_reflections, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_spread_refractions, EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS::raytrace_spread_shadows, Refract(), MATERIAL::Shade(), shadeHit(), and UniformRandomHemisphereDirection().
Referenced by renderAntiAliasPackets(), renderPreview(), renderRayPackets(), and shadeHit().
|
private |
Definition at line 181 of file render_3d_raytrace.h.
Referenced by IntersectBoardItem(), Reload(), RENDER_3D_RAYTRACE(), renderAntiAliasPackets(), renderBlockTracing(), renderPreview(), shadeHit(), and ~RENDER_3D_RAYTRACE().
|
private |
Definition at line 179 of file render_3d_raytrace.h.
Referenced by createItemsFromContainer(), insertHole(), Reload(), RENDER_3D_RAYTRACE(), and ~RENDER_3D_RAYTRACE().
|
private |
Used to see if the windows size changed.
Definition at line 184 of file render_3d_raytrace.h.
Referenced by render(), and renderBlockTracing().
|
private |
Definition at line 183 of file render_3d_raytrace.h.
Referenced by render(), and renderBlockTracing().
|
private |
Flag if a position was already processed (cleared each new render).
Definition at line 190 of file render_3d_raytrace.h.
Referenced by initializeBlockPositions(), renderBlockTracing(), renderPreview(), renderTracing(), and restartRenderState().
|
private |
Definition at line 196 of file render_3d_raytrace.h.
Referenced by initializeBlockPositions(), and renderPreview().
|
private |
Encode the Morton code positions (on fast preview mode).
Definition at line 193 of file render_3d_raytrace.h.
Referenced by restartRenderState().
|
private |
Save the number of blocks progress of the render.
Definition at line 160 of file render_3d_raytrace.h.
Referenced by RENDER_3D_RAYTRACE(), and restartRenderState().
|
protectedinherited |
Definition at line 105 of file render_3d_base.h.
Referenced by addModels(), RENDER_3D_OPENGL::addObjectTriangles(), addPadsAndVias(), RENDER_3D_OPENGL::createBoard(), createItemsFromContainer(), RENDER_3D_OPENGL::generate3dGrid(), RENDER_3D_OPENGL::generateHoles(), RENDER_3D_OPENGL::generateLayerList(), RENDER_3D_OPENGL::generateViasAndPads(), RENDER_3D_OPENGL::get3dModelsFromFootprint(), RENDER_3D_OPENGL::get3dModelsSelected(), RENDER_3D_OPENGL::getLayerZPos(), getModelMaterial(), insertHole(), load3DModels(), RENDER_3D_OPENGL::load3dModels(), postProcessBlurFinish(), postProcessShading(), RENDER_3D_OPENGL::Redraw(), Redraw(), RENDER_3D_OPENGL::reload(), Reload(), render(), renderAntiAliasPackets(), renderBlockTracing(), RENDER_3D_OPENGL::renderBoardBody(), RENDER_3D_OPENGL::renderModel(), RENDER_3D_OPENGL::renderOpaqueModels(), RENDER_3D_OPENGL::renderSolderMaskLayer(), RENDER_3D_OPENGL::renderTransparentModels(), RENDER_3D_OPENGL::setLayerMaterial(), RENDER_3D_OPENGL::setupMaterials(), setupMaterials(), and shadeHit().
|
private |
Definition at line 142 of file render_3d_raytrace.h.
Referenced by setupMaterials().
|
private |
Definition at line 148 of file render_3d_raytrace.h.
Referenced by getModelMaterial(), and setupMaterials().
|
privateinherited |
< Factory that returns a suitable busy indicator for the context.
Definition at line 128 of file render_3d_base.h.
Referenced by RENDER_3D_BASE::CreateBusyIndicator(), and RENDER_3D_BASE::SetBusyIndicatorFactory().
|
protectedinherited |
Flag if the opengl specific for this render was already initialized.
Definition at line 107 of file render_3d_base.h.
Referenced by RENDER_3D_OPENGL::Redraw(), Redraw(), RENDER_3D_OPENGL::reload(), Reload(), render(), RENDER_3D_OPENGL::render3dArrows(), renderBlockTracing(), and RENDER_3D_OPENGL::renderTransparentModels().
|
private |
Definition at line 166 of file render_3d_raytrace.h.
Referenced by Redraw(), Reload(), render(), and RENDER_3D_RAYTRACE().
|
protectedinherited |
Settings reference in use for this render.
Definition at line 102 of file render_3d_base.h.
Referenced by RENDER_3D_OPENGL::Load3dModelsIfNeeded(), and RENDER_3D_BASE::RENDER_3D_BASE().
|
private |
Definition at line 176 of file render_3d_raytrace.h.
Referenced by createItemsFromContainer(), insertHole(), and Reload().
|
private |
Definition at line 214 of file render_3d_raytrace.h.
Referenced by createObject(), and RENDER_3D_RAYTRACE().
|
private |
Definition at line 213 of file render_3d_raytrace.h.
Referenced by createObject(), and RENDER_3D_RAYTRACE().
BLINN_PHONG_MATERIAL RENDER_3D_RAYTRACE::m_Copper |
Definition at line 137 of file render_3d_raytrace.h.
|
private |
Definition at line 143 of file render_3d_raytrace.h.
Referenced by setupMaterials().
BLINN_PHONG_MATERIAL RENDER_3D_RAYTRACE::m_EpoxyBoard |
Definition at line 136 of file render_3d_raytrace.h.
|
private |
Definition at line 199 of file render_3d_raytrace.h.
Referenced by initializeBlockPositions().
|
private |
Definition at line 201 of file render_3d_raytrace.h.
Referenced by RENDER_3D_RAYTRACE().
BLINN_PHONG_MATERIAL RENDER_3D_RAYTRACE::m_Floor |
Definition at line 139 of file render_3d_raytrace.h.
|
protectedinherited |
Definition at line 110 of file render_3d_base.h.
Referenced by RENDER_3D_OPENGL::initializeOpenGL(), initializeOpenGL(), RENDER_3D_OPENGL::Redraw(), Redraw(), and RENDER_3D_BASE::RENDER_3D_BASE().
|
private |
Definition at line 151 of file render_3d_raytrace.h.
Referenced by RENDER_3D_RAYTRACE(), renderPreview(), renderTracing(), and shadeHit().
|
private |
Definition at line 164 of file render_3d_raytrace.h.
Referenced by Reload(), and shadeHit().
struct { ... } RENDER_3D_RAYTRACE::m_materials |
Referenced by insertHole(), Reload(), and setupMaterials().
|
private |
Stores materials of the 3D models.
Definition at line 210 of file render_3d_raytrace.h.
Referenced by getModelMaterial(), and Reload().
BLINN_PHONG_MATERIAL RENDER_3D_RAYTRACE::m_NonPlatedCopper |
Definition at line 138 of file render_3d_raytrace.h.
|
private |
Store the list of created objects special for RT that will be clear in the end.
Definition at line 173 of file render_3d_raytrace.h.
Referenced by createItemsFromContainer(), insertHole(), and Reload().
|
private |
Encode Morton code positions.
Definition at line 187 of file render_3d_raytrace.h.
Referenced by Redraw(), and RENDER_3D_RAYTRACE().
|
private |
Definition at line 168 of file render_3d_raytrace.h.
Referenced by deletePbo(), initPbo(), and RENDER_3D_RAYTRACE().
|
private |
Definition at line 178 of file render_3d_raytrace.h.
Referenced by Reload(), RENDER_3D_RAYTRACE(), and ~RENDER_3D_RAYTRACE().
BLINN_PHONG_MATERIAL RENDER_3D_RAYTRACE::m_Paste |
Definition at line 133 of file render_3d_raytrace.h.
|
private |
Definition at line 171 of file render_3d_raytrace.h.
Referenced by initPbo(), and RENDER_3D_RAYTRACE().
|
private |
Definition at line 170 of file render_3d_raytrace.h.
Referenced by deletePbo(), initPbo(), Redraw(), and RENDER_3D_RAYTRACE().
|
private |
Definition at line 146 of file render_3d_raytrace.h.
Referenced by getModelMaterial(), and setupMaterials().
|
private |
Definition at line 144 of file render_3d_raytrace.h.
Referenced by setupMaterials().
|
private |
Definition at line 162 of file render_3d_raytrace.h.
Referenced by initializeBlockPositions(), postProcessShading(), renderBlockTracing(), and restartRenderState().
|
private |
Definition at line 198 of file render_3d_raytrace.h.
Referenced by initializeBlockPositions(), initPbo(), postProcessBlurFinish(), postProcessShading(), Redraw(), render(), renderBlockTracing(), and renderPreview().
|
protectedinherited |
The window size that this camera is working.
Definition at line 113 of file render_3d_base.h.
Referenced by RENDER_3D_BASE::IsReloadRequestPending(), RENDER_3D_OPENGL::Redraw(), Redraw(), RENDER_3D_OPENGL::reload(), Reload(), RENDER_3D_BASE::ReloadRequest(), and RENDER_3D_BASE::RENDER_3D_BASE().
|
private |
Time that the render starts.
Definition at line 157 of file render_3d_raytrace.h.
Referenced by render(), RENDER_3D_RAYTRACE(), and restartRenderState().
|
private |
State used on quality render.
Definition at line 154 of file render_3d_raytrace.h.
Referenced by postProcessShading(), Redraw(), render(), RENDER_3D_RAYTRACE(), and restartRenderState().
|
private |
Definition at line 203 of file render_3d_raytrace.h.
Referenced by initializeBlockPositions(), postProcessShading(), RENDER_3D_RAYTRACE(), and ~RENDER_3D_RAYTRACE().
|
private |
Definition at line 147 of file render_3d_raytrace.h.
Referenced by getModelMaterial(), and setupMaterials().
BLINN_PHONG_MATERIAL RENDER_3D_RAYTRACE::m_SilkS |
Definition at line 134 of file render_3d_raytrace.h.
|
private |
Definition at line 149 of file render_3d_raytrace.h.
Referenced by setupMaterials().
BLINN_PHONG_MATERIAL RENDER_3D_RAYTRACE::m_SolderMask |
Definition at line 135 of file render_3d_raytrace.h.
|
private |
Definition at line 145 of file render_3d_raytrace.h.
Referenced by setupMaterials().
|
protectedinherited |
Definition at line 116 of file render_3d_base.h.
Referenced by initializeBlockPositions(), RENDER_3D_OPENGL::Redraw(), Redraw(), RENDER_3D_OPENGL::render3dArrows(), RENDER_3D_BASE::RENDER_3D_BASE(), renderBlockTracing(), RENDER_3D_OPENGL::SetCurWindowSize(), and SetCurWindowSize().
|
private |
Definition at line 206 of file render_3d_raytrace.h.
Referenced by initializeBlockPositions(), Redraw(), RENDER_3D_RAYTRACE(), and renderBlockTracing().
|
private |
Definition at line 207 of file render_3d_raytrace.h.
Referenced by initializeBlockPositions(), Redraw(), RENDER_3D_RAYTRACE(), and renderBlockTracing().
|
staticconstexpr |
Definition at line 60 of file render_3d_raytrace.h.
Referenced by Reload().