PBRT_V2 总结记录 <8> Primitive 和 Intersection

本文总结了PBRT_V2中的Primitive类,它结合了Shape的几何信息和材质信息,提供了CanIntersect、Intersect等接口。Intersection结构包含更多相交信息,如材质属性。Primitive::FullyRefine用于细分Primitive直到可相交。此外,GetAreaLight返回Primitive是否为光源,GetBSDF和GetBSSRDF则描述表面光散射属性。
摘要由CSDN通过智能技术生成

Primitive 类

class Primitive : public ReferenceCounted {
public:
	// Primitive Interface
	Primitive() : primitiveId(nextprimitiveId++) { }
	virtual ~Primitive();
	virtual BBox WorldBound() const = 0;
	virtual bool CanIntersect() const;
	virtual bool Intersect(const Ray &r, Intersection *in) const = 0;
	virtual bool IntersectP(const Ray &r) const = 0;
	virtual void Refine(vector<Reference<Primitive> > &refined) const;
	void FullyRefine(vector<Reference<Primitive> > &refined) const;
	virtual const AreaLight *GetAreaLight() const = 0;
	
	virtual BSDF *GetBSDF(const DifferentialGeometry &dg,
		const Transform &ObjectToWorld, MemoryArena &arena) const = 0;

	virtual BSSRDF *GetBSSRDF(const DifferentialGeometry &dg,
		const Transform &ObjectToWorld, MemoryArena &arena) const = 0;

	// Primitive Public Data
	const uint32_t primitiveId;
protected:
	// Primitive Protected Data
	static uint32_t nextprimitiveId;
};

类的作用:

(Shape不能表示Scene上的一个物体,因为Shape只有几何的信息,一个物体往往需要的还有是外观的信息(材质,所以 出现了Primitive ,既 包含了几何信息,又包含了材质信息))

Although the Shape class provides a convenient abstraction for
geometric operations such as intersection and bounding, it doesn’t contain enough information
to fully describe an object in a s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值